Network based system for analyzing a client system and generating a configuration diagram which describes the client system

ABSTRACT

System and method for characterizing a system. Electronic communication is established between a server computer and a client system over a network. The client system includes a plurality of devices coupled together, where at least one of the devices includes one or more programs, e.g., graphical, text-based, and/or hardware configuration programs. The server programmatically determines presence of the devices and programs of the client system, and programmatically generates a diagram which visually represents the client system. The diagram includes device icons representing the devices, link icons indicating coupling between the devices, and program icons representing the programs. The program icons are displayed proximate to the device icons representing the devices which store and/or execute the respective programs. The server transmits the diagram to the client system. The diagram is displayed on a display of the client system. The diagram is used to document, modify, and/or debug the client system configuration.

CONTINUATION DATA

[0001] This application is a Continuation-In-Part of U.S. patentapplication Ser. No. 10/120,257 titled “Network-based System forConfiguring a Measurement System using Configuration InformationGenerated based on a User Specification,” filed Apr. 10, 2002, whoseinventors are David W. Fuller III, Michael L. Santori, Brian Sierer,Ganesh Ranganathan, John Pasquarette, Joseph E. Peck, Matthew Novacek,Hugo A. Andrade, and Newton Peterson, which was a Continuation-In-Partof U.S. application Ser. No. 10/101,512 titled “Network-based System forConfiguring a Measurement System using Configuration InformationGenerated based on a User Specification” filed Mar. 19, 2002, whoseinventors are Brian Sierer, Ganesh Ranganathan, John Pasquarette, DavidW. Fuller III, Joseph E. Peck, Matthew Novacek, and Hugo A. Andrade,which claimed benefit of priority of U.S. provisional application SerialNo. 60/312,359 titled “System and Method for Online Configuration of aMeasurement System” filed Aug. 15, 2001, whose inventors are BrianSierer, Ganesh Ranganathan, Hugo Andrade and Joseph Peck.

FIELD OF THE INVENTION

[0002] The present invention relates to the fields of system design anddistributed software programming and deployment, and more particularlyto a system and method for analyzing a client system and generating aconfiguration diagram that represents the client system. The presentinvention further relates to utilizing the configuration diagram toanalyze, modify, and/or debug the client system configuration.

DESCRIPTION OF THE RELATED ART

[0003] With the advent of networked computer systems, there has been atrend in computer software to provide more distributed softwareapplications. For example, in some fields developers are attempting todistribute software applications among two or more nodes or computersystems in a network, wherein the application may comprise a pluralityof different software programs executing in a plurality of differentcomputer systems.

[0004] Measurement and automation systems are moving toward computerbased systems wherein a computer system performs much of the processing,analysis, or control for measurement and automation applications.Measurement and automation systems are also moving toward network-basedor distributed systems, wherein a plurality of network-based devicesoperate together to perform a desired measurement and/or automationfunction. Various new intelligent devices are also starting to appear inmeasurement and automation systems, such as smart sensors, smartcameras, smart motion control devices, smart distributed dataacquisition devices, computer based instrument cards, PXI and VXIsystems which may include intelligent controllers or reconfigurabledevices, programmable logic controllers (PLCs), etc.

[0005] Computer-based measurement and automation systems which employintelligent devices have become increasingly desirable in view of theincreasing complexity of measurement and automation tasks, and thevariety of intelligent or programmable instruments and devices availablefor use. However, due to the wide variety of possible testing andcontrol situations and environments, and also the wide array ofinstruments or devices available, it is often necessary for a user todevelop custom programs to control a desired system.

[0006] Increasingly, computers are required to be used and programmed bythose who are not highly trained in computer programming techniques.This is particularly true in the measurement and automation fields,where engineers are often required to develop a test, measurement orautomation application to accomplish a certain objective. As a result,in many cases it is extremely difficult for a user to be able to createvarious computer programs and distribute these programs among devices ina distributed system. Additionally, in many cases a user may beuncertain as to the configuration of his or her system, includingdevices, inter-device couplings, and programs stored and/or installed onone or more of the devices. This uncertainty may complicate efforts toconfigure the system for performing a desired task. Therefore, it wouldbe desirable to be able to provide improved systems and methods forcharacterizing systems over a network.

SUMMARY OF THE INVENTION

[0007] Various embodiments are presented of a system and method forcharacterizing systems through the creation and use of configurationdiagrams. The methods described herein may be used for various types ofoperations in configuring, managing and specifying systems and devices,including creating programs, managing programs in the system, deployingprograms to various distributed devices, configuring remote execution orinter-operation of distributed programs, and executing distributedapplications. Embodiments of the present invention may also be used fordevice configuration, data distribution among or between devices, systemand I/O configuration, data storage/management, and debugging andperformance analysis. Embodiments of the invention may utilize graphicaliconic-based techniques for performing the above operations.

[0008] Various embodiments of the invention may be implemented orperformed by a stand alone system. In other embodiments, the system maybe a client system, where, as used herein, the term “client system”refers to a system which communicates with another system, e.g., aserver computer system, to receive or use services provided by the othersystem, as is well known in the art. The embodiments described belowrelate to client/server embodiments of the invention, where the clientsystem and the server system each perform respective portions of themethod, although this is not intended to limit the invention to anyparticular form or functionality.

[0009] In one embodiment of the present invention, electroniccommunication may be established between a server computer and a clientsystem over a network, e.g., a LAN, WAN, the Internet, or any othertransmission medium. For example, in one embodiment, a device in theclient system, such as a client computer, may initiate a network sessionwith the server computer, e.g., by directing a web browser to a URL(Universal Resource Locator) of a website maintained on the servercomputer. Alternatively, the server computer may initiate communicationswith the client system, e.g., the client computer. The communicationbetween the server computer and the client system may utilize anyavailable communication protocols, e.g., TCP/IP, HTTP, Ethernet, 802.11,etc., as is well known in the art.

[0010] The client system preferably includes a plurality of devicescoupled together, where at least one of the devices includes one or moreprograms. Once communication is established between the server computerand the client system, then the server computer may programmaticallydetermine information, e.g., configuration information, regarding theplurality of devices and the one or more programs. For example, theserver computer may programmatically analyze the client system todetermine the presence of one or more of the plurality of devices andthe one or more programs.

[0011] In one embodiment, the server computer may download a program tothe client system which may execute on the client system, e.g., on adevice of the client system, to programmatically determine theinformation, and may provide the determined information to the servercomputer. In another embodiment, the server computer may access at leasta portion of the information from at least one of the devices in thesystem, e.g., by accessing plug and play information to determine thepresence of the devices and programs, or by querying a configurationprogram resident on one of the devices in the system to determine thepresence of the devices and programs.

[0012] It is noted that in different embodiments, the client system mayinclude devices and software related to various applications and fields.For example, the client system may comprise one or more of: ameasurement system, a modeling or simulation system, such as a rapidcontrol prototype system or a hardware-in-the-loop simulation, anautomation system, and so on. It is noted that the example applicationsand fields described are exemplary only, and are not intended to limitthe application of the method or the types of client systems to anyparticular domains or fields. Similarly, the devices and programsincluded in the client system may be of any of a variety of types. Forexample, the devices may include one or more of analog devices, digitaldevices, processor-based devices, and programmable hardware elements,e.g., field programmable gate arrays (FPGAs), among others. Similarly,the programs included in the client system may be text-based programs,such as C, C++, Java, HTML, etc., graphical programs, such as LabVIEWgraphical programs, and/or hardware configuration programs, amongothers. In an embodiment where at least one of the plurality of devicesincludes a field programmable gate array (FPGA), a hardwareconfiguration program may be deployable on the FPGA to perform afunction, e.g., a measurement, control, automation, or modelingfunction, among others.

[0013] In response to determining the information regarding the deviceand programs in the client system, the server computer mayprogrammatically generate a diagram which visually or graphicallyrepresents the system. The diagram may include device icons representingeach of the plurality of devices, link icons indicating couplingrelationships between the plurality of devices, and program iconsrepresenting each of the one or more programs. In one embodiment, thediagram is a configuration diagram representing the hardware andsoftware configuration of the client system.

[0014] In one embodiment, the device icons each have an appearance tovisually indicate a type of the respective device. In other words, eachdevice icon may visually or graphically indicate the type of device thatthe device icon represents. Similarly, the program icons may each havean appearance to visually indicate a type of the respective program. Asnoted above, the configuration diagram may also include links betweenthe device icons indicating respective couplings between the devices inthe client system. In one embodiment, the link icons may each have anappearance to visually indicate a type of the respective link betweendevices. For example, a link icon may visually indicate whether the linkis a serial, parallel, digital, analog, and/or wireless link, amongothers, or may indicate such characteristics as the signal or data type,e.g., power vs. data, direction of data flow, numbers of wires in thelink, communication protocol, etc.

[0015] In one embodiment, the program icons may be visually displayedindicating an association with respective device icons representingrespective devices in which the programs are stored and/or executed. Forexample, the program icons may be visually displayed proximate torespective device icons representing respective devices in which theprograms are stored and/or executed. It should be noted that as usedherein, the term “proximate” refers to being on or near an item, e.g.,an icon, i.e., if a first icon is displayed proximate to a second icon,the first icon is sufficiently close to the second icon such that theuser would presume or understand an intended relationship between thetwo icons. Thus, a program icon may be located proximate to a deviceicon to represent the fact that the corresponding program is storedand/or executed on the corresponding device. In another embodiment, linkicons may be displayed coupling the program icons with the respectivedevice icons. Other graphical techniques associating the program iconswith the respective devices are also contemplated.

[0016] In an embodiment where the server computer downloads a program tothe client system to determine the information regarding the pluralityof devices and the one or more programs in the client system, ratherthan providing the information to the server computer and the servercomputer generating the diagram as described above, the program mayinstead use the determined information to generate the diagram. In otherwords, the program may execute on (a device of) the client system togenerate the diagram based on the determined information.

[0017] Once the diagram has been generated, e.g., by the servercomputer, then the server computer may transmit the diagram to theclient system. In an embodiment where the diagram is generated bysoftware executing on the client system, the diagram may instead betransmitted by the client system to the server computer, oralternatively, may not be transmitted at all.

[0018] Finally, the diagram may be displayed, for example, on a displaydevice of the client system, e.g., for viewing by a user of the clientsystem. In different embodiments, the server computer may cause thediagram to be displayed on the display device of the client system, orthe client system may initiate the display of the diagram. In oneembodiment, the configuration diagram may be stored in a memory mediumof the client system (and/or in a memory medium of the server computer),where the configuration diagram is usable for one or more of:documenting the client system configuration, modifying the client systemconfiguration, adding/removing programs or devices to/from the clientsystem, and/or debugging the client system.

BRIEF DESCRIPTION OF THE DRAWINGS

[0019] A better understanding of the present invention can be obtainedwhen the following detailed description of the preferred embodiment isconsidered in conjunction with the following drawings, in which:

[0020]FIG. 1 illustrates a network system comprising two or morecomputer systems that may implement an embodiment of the presentinvention;

[0021]FIG. 2A illustrates an instrumentation system according to oneembodiment of the invention;

[0022]FIG. 2B illustrates an industrial automation system according toone embodiment of the invention;

[0023] FIGS. 3 illustrates an exemplary distributed measurement systemaccording to one embodiment of the invention;

[0024]FIG. 4 is an exemplary block diagram of the computer systems ofthe preceding Figures;

[0025]FIG. 5 is a block diagram of an exemplary development environmentfor creating and using configuration diagrams;

[0026]FIG. 6 is a flowchart diagram illustrating creating aconfiguration diagram and using the configuration diagram to graphicallyconfigure program deployment and/or invocation, e.g., deploy programs ondevices in the system;

[0027]FIG. 7 is a flowchart diagram illustrating creation of aconfiguration diagram according to one embodiment of the invention;

[0028]FIG. 8 is a flowchart diagram illustrating display of programicons or element icons corresponding to programs or elements comprisedin a device;

[0029]FIG. 9 is a flowchart diagram illustrating deploying a program onto a device according to one embodiment of the invention;

[0030]FIG. 10 is a flowchart diagram illustrating examining a programtype of a program and selectively converting the program to a typecompatible with the destination device;

[0031]FIG. 11 is a flowchart diagram illustrating various operationsthat may be performed when moving a program icon from source device iconto a destination device icon;

[0032]FIG. 12 is a flowchart diagram illustrating association of aprogram icon from a remote device to the main computer system toconfigure the main computer system to invoke the program;

[0033]FIG. 13A is a flowchart diagram illustrating various operationsthat may be performed on a program icon;

[0034]FIG. 13B is a flowchart diagram illustrating execution of anapplication;

[0035]FIG. 14 illustrates a configuration dialog which may be used increating a configuration diagram;

[0036] FIGS. 15-19 are screen shots illustrating graphical deployment orinvocation changes of programs in exemplary simple configurationdiagrams;

[0037]FIG. 20A illustrates selection of options on the configurationdiagram;

[0038]FIG. 20B illustrates selection of a “Remote Call” feature;

[0039]FIGS. 21A and 21B illustrate exemplary configuration diagrams fora measurement system;

[0040]FIG. 22 is a flowchart diagram illustrating creation of agraphical program;

[0041]FIG. 23 is a flowchart diagram illustrating configuration of anode in a graphical program for remote execution;

[0042]FIG. 24A illustrates an exemplary block diagram of a graphicalprogram where the user is configuring a remote call of a node;

[0043]FIG. 24B illustrates the exemplary block diagram of FIG. 24A afterthe user has deployed the node to a remote device for remote execution;

[0044]FIG. 25 is a flowchart diagram illustrating graphicallyincorporating a program icon from a remote device into another program;

[0045]FIG. 26 is a flowchart diagram illustrating creation of agraphical program which includes incorporation of device icons into thegraphical program;

[0046] FIGS. 27A-27E are screen shots illustrating a sequence where theuser drags a device icon onto another configuration diagram, selects aparticular device icon in the configuration diagram, selects aparticular program icon, and inserts the device icon into the programrepresented by the program icon;

[0047]FIGS. 28A and 28B are screen shots illustrating incorporating aprogram icon from a configuration diagram into a graphical program;

[0048]FIG. 29 illustrates a simple configuration diagram where the userhas selected a device icon to configure the device;

[0049]FIG. 30 illustrates the configuration diagram of FIG. 29 where theuser has selected an option to view I/O channels and data points of adevice icon, and a context-sensitive help window is displayed;

[0050]FIG. 31 illustrates operation whereby a user drags and drops aprogram icon from a first device icon onto a second device icon;

[0051]FIG. 32 illustrates operation whereby a user selects a data pointelement from the configuration diagram and drags and drops the datapoint element from the configuration diagram on to the front panel of agraphical program;

[0052]FIG. 33A illustrates operation whereby a user selects a data pointelement from the configuration diagram and drags and drops the datapoint element from the configuration diagram on to the block diagram ofa graphical program;

[0053]FIG. 33B illustrates operation whereby a user “wires up” an iconrepresenting the data point element with other nodes or graphicalprogram elements in the block diagram;

[0054]FIG. 34 illustrates operation whereby a user selects a programicon to start operations;

[0055]FIG. 35 illustrates exemplary service icons that can be used tocontrol device execution;

[0056]FIG. 36 illustrates operation whereby a user desires to copysettings from a device icon to another device icon;

[0057]FIG. 37 flowcharts an embodiment of a method for characterizing aclient system over a network;

[0058]FIG. 38 flowcharts an embodiment of a method for animatingdeployment of a program to a client system.

[0059]FIG. 39 flowcharts an embodiment of a method for receivingpurchase information for a client system;

[0060]FIG. 40 flowcharts an embodiment of a method for specifyingproducts for a measurement system;

[0061]FIG. 41 flowcharts an embodiment of a method for generating aconfiguration diagram for a measurement system based on a userspecification of a task;

[0062]FIGS. 42 and 43 flowchart embodiments of a method for configuringa client system using a configuration diagram database; and

[0063]FIG. 44 flowcharts one embodiment of a method for populating aconfiguration diagram database. n

[0064] While the invention is susceptible to various modifications andalternative forms, specific embodiments thereof are shown by way ofexample in the drawings and are herein described in detail. It should beunderstood, however, that the drawings and detailed description theretoare not intended to limit the invention to the particular formdisclosed, but on the contrary, the intention is to cover allmodifications, equivalents and alternatives falling within the spiritand scope of the present invention as defined by the appended claims.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS Incorporation byReference

[0065] The following references are hereby incorporated by reference intheir entirety as though fully and completely set forth herein:

[0066] U.S. Pat. No. 4,914,568 titled “Graphical System for Modeling aProcess and Associated Method,” issued on Apr. 3, 1990.

[0067] U.S. Pat. No. 5,481,741 titled “Method and Apparatus forProviding Attribute Nodes in a Graphical Data Flow Environment”.

[0068] U.S. Pat. No. 6,173,438 titled “Embedded Graphical ProgrammingSystem” filed Aug. 18, 1997.

[0069] U.S. Pat. No. 6,219,628 titled “System and Method for Configuringan Instrument to Perform Measurement Functions Utilizing Conversion ofGraphical Programs into Hardware Implementations,” filed Aug. 18, 1997.

[0070] U.S. patent application Ser. No. 09/617,600 titled “GraphicalProgramming System with Distributed Block Diagram Execution and FrontPanel Display,” filed Jun. 13, 2000.

[0071] U.S. patent application Ser. No. 09/745,023 titled “System andMethod for Programmatically Generating a Graphical Program in Responseto Program Information,” filed Dec. 20, 2000.

[0072] U.S. Provisional Patent Application Serial No. 60/312,242 titled“System and Method for Graphically Creating, Deploying and ExecutingPrograms in a Distributed System” filed Aug. 14, 2001.

[0073] U.S. patent application Ser. No. 10/123,511 titled “GraphicalAssociation of Program Icons,” filed Apr. 16, 2002.

[0074] U.S. patent application Ser. No. 10/046,868 titled “System andMethod for Performing Rapid Control Prototyping Using a Plurality ofGraphical Programs that Share a Single Graphical User Interface,” filedJan. 15, 2002.

[0075] U.S. patent application Ser. No. 10/046,861 titled “System andMethod for Performing a Hardware in the Loop Simulation Using aPlurality of Graphical Programs that Share a Single Graphical UserInterface,” filed Jan. 15, 2002.

[0076] U.S. patent application Ser. No. 10/008,792 titled “MeasurementSystem Software Architecture for Easily Creating High-PerformanceMeasurement Applications,” filed Nov. 13, 2001.

[0077] U.S. patent application Ser. No. 10/120,257 titled “Network-basedSystem for Configuring a Measurement System using ConfigurationInformation Generated based on a User Specification,” filed Apr. 10,2002.

[0078] U.S. application Ser. No. 10/101,512 titled “Network-based Systemfor Configuring a Measurement System using Configuration InformationGenerated based on a User Specification” filed Mar. 19, 2002, whoseinventors are Brian Sierer, Ganesh Ranganathan, John Pasquarette, DavidW. Fuller III, Joseph E. Peck, Matthew Novacek, and Hugo A. Andrade.

[0079] U.S. Provisional Application Serial No. 60/312,359 titled “Systemand Method for Online Configuration of a Measurement System” filed Aug.15, 2001, whose inventors are Brian Sierer, Ganesh Ranganathan, HugoAndrade and Joseph Peck.

[0080] The LabVIEW and BridgeVIEW graphical programming manuals,including the “G Programming Reference Manual”, available from NationalInstruments Corporation, are also hereby incorporated by reference intheir entirety.

FIG. 1—Computer Network

[0081]FIG. 1 illustrates an exemplary system including a first computersystem 82 that is coupled to a second computer system 90 over a network.The computer system 82 may be coupled through a network 84 (or acomputer bus) to the second computer system 90. The computer systems 82and 90 may each be any of various types, as desired. Also, the network84 can also be any of various types, including a LAN (local areanetwork), WAN (wide area network), the Internet, or an Intranet, amongothers.

[0082] The first and second computer systems 82 and 90 may comprisedevices that form at least a portion of a system, such as a distributedsystem. Alternatively, the computer system 82 may comprise part of thesystem, and the server computer system 90 may provide various servicesto the system, such as a selection of programs and/or devices for thesystem, or generation of a configuration diagram for the system asdescribed herein.

[0083] Additional computer systems (not shown) may also couple to thefirst and/or second computer systems 82 and 90. Various other devicesmay connect or couple to one or more of the computer systems 82 and 90,or to other computer systems in the system. For example, any one or moreof the devices shown in FIGS. 2A and 2B may couple to one or both of thecomputer systems 82 and 90. In addition, the system may comprise asingle computer system, such as computer system 82, coupled to one ormore other devices.

[0084] As used herein, the term “system” is intended to include a systemcomprising two or more interconnected or coupled devices, i.e., two ormore devices that are coupled together in some fashion. The two or moredevices may be coupled together via wired or wireless means. Wired meansmay include a network, such as a local area network (LAN) and/or a widearea network (WAN), such as the Internet, a computer bus, a serial orparallel bus, or other wired communication methods. Example local areanetworks include Ethernet networks, Token Ring networks, and variousindustrial communication networks such as Foundation Fieldbus,DeviceNet, and CAN (Controller Area Network) networks. Example parallelbuses include the PCI bus, PXI bus, GPIB, and VXI bus, among others.Example serial buses include USB (Universal Serial Bus), IEEE 1394,RS-242, and RS-485, among others. Wireless means may include wirelessprotocols such as IEEE 802.11 (wireless Ethernet), Bluetooth, and othertypes of wireless communication.

[0085] As used herein, the term “device” is intended to have itsordinary meaning as any of various types of devices, units orcomponents. The term “device” is intended to include “programmabledevices” and “non-programmable devices”.

[0086] As used herein, the term “programmable device” is intended toinclude any of various types of devices that include one or more of: 1)a processor and memory; or 2) a programmable hardware element orreconfigurable logic. Exemplary types of processors include aconventional microprocessor or CPU (such as an X86, PowerPC, SunSparc,etc.), a digital signal processor (DSP), microcontroller, or other typeof processor. Exemplary types of programmable hardware elements includea programmable logic device (PLD), e.g., an FPGA (field programmablegate array), or other types of reconfigurable logic. It is noted that aprogram may typically only be deployed to or stored on a programmabledevice. In the description that follows, references to devices in thecontext of deploying, storing, or modifying programs on the devicegenerally refer to programmable devices.

[0087] Exemplary types of programmable devices include computer systems;network devices; personal digital assistants (PDAs); television systems;measurement devices (including instruments, industrial automationdevices, process control devices (e.g., for automation and measurement),smart data acquisition devices, smart sensors (including smart cameras),and smart actuators, etc.); video devices (e.g., digital cameras,digital video cameras); audio devices; computer peripherals; telephones;appliances; or other processor-based or programmable hardware-baseddevices. Exemplary measurement and automation devices include any of thedevices shown in FIGS. 2A and 2B. Exemplary network devices includenetwork interface cards, routers, bridges, switches, hubs, etc.

[0088] The term “non-programmable device” is intended to include any ofvarious components, such as transducers, sensors, connector blocks,cabling, and other non-programmable devices.

[0089] As used herein, the term “computer system” may include any typeof computer system, including a personal computer system, mainframecomputer system, workstation, network appliance, Internet appliance,etc. In general, the term “computer system” can be broadly defined toencompass any device having at least one processor that executesinstructions from a memory medium.

[0090] As used herein, the term “application” includes one or moreprograms. An application may comprise a plurality of programs whichoperate together to perform a function or accomplish a certain result.The plurality of programs may operate together in a system, whereinvarious programs may be deployed to various devices in the system fordistributed execution. An application may thus comprise a plurality ofprograms distributed among a plurality of devices for distributedexecution. An application may also include other, data structures suchas configuration files for configuring hardware devices, help files,supporting documentation, etc. The term “project” may be used similarlyto an “application”.

[0091] As used herein, the term “program” is intended to include 1) asoftware program which may be stored in a memory and is executable by aprocessor or 2) a hardware configuration program useable for configuringa programmable hardware element or reconfigurable logic. A softwareprogram may be any type of code, script and/or data that may be storedin a memory medium and executed by a processor. Exemplary softwareprograms include programs written in text-based programming languages,such as C, C++, Pascal, Fortran, Cobol, Java, etc.; programs written inassembly language; programs written in graphical programming languages;programs that have been compiled to machine language; scripts; and othertypes of executable software. Exemplary hardware configuration programsinclude netlists or bit files for elements such as FPGAs and otherreconfigurable hardware.

[0092] As used herein, the term “graphical program” or “block diagram”is intended to include a program comprising graphical code, e.g., two ormore interconnected nodes or icons, wherein the interconnected nodes oricons may visually indicate the functionality of the program. The nodesmay be connected in one or more of a data flow, control flow, and/orexecution flow format. The nodes may also be connected in a “signalflow” format, which is a subset of data flow. Thus the terms “graphicalprogram” or “block diagram” are each intended to include a programcomprising a plurality of interconnected nodes or icons which visuallyindicate the functionality of the program.

[0093] A “data flow” graphical program or diagram refers to a pluralityof interconnected nodes or icons, wherein the interconnections among thenodes visually indicate that data produced by one node is used byanother node. A “data flow” graphical program or diagram may alsoinclude one or more control flow constructs or other non-data flowconstructs.

[0094] A graphical program may also optionally comprise a user interfaceor front panel. The user interface may be contained in the block diagramof the graphical program or may be contained in one or more separatepanels or windows (or both). The user interface of a graphical programmay include various graphical user interface elements or front panelobjects, such as user interface controls and/or indicators, thatrepresent or display the respective input and/or output that will beused by the graphical program or VI, and may include other icons whichrepresent devices being controlled. The user interface or front panelmay be comprised in a single window of user interface elements, or maycomprise a plurality of individual windows each having one or more userinterface elements, wherein the individual windows may optionally betiled together. As another example, the user interface or front panelmay comprise user interface or front panel objects, e.g., the GUI,embedded in the block diagram. The user interface of a graphical programmay display only output, only input, or both input and output. The term“front panel” refers to a user interface wherein the user is able tointeractively control or manipulate the input being provided to thegraphical program and view resulting output. Any of various types ofprograms may include a user interface or front panel, includinggraphical programs, text-based programs, etc.

[0095] Examples of graphical program development environments that maybe used to create graphical programs include LabVIEW, DasyLab, andDiaDem from National Instruments, VEE from Agilent, WiT from Coreco,Vision Program Manager from PPT Vision, SoftWIRE from MeasurementComputing, Simulink from the MathWorks, Sanscript from NorthwoodsSoftware, Khoros from Khoral Research, SnapMaster from HEM Data, VisSimfrom Visual Solutions, ObjectBench by SES (Scientific and EngineeringSoftware), and VisiDAQ from Advantech, among others. In the preferredembodiment, the system uses the LabVIEW graphical programming systemavailable from National Instruments.

[0096] A program for performing an instrumentation, measurement,network, automation or simulation function, such as measuring phenomenaof a Unit Under Test (UUT) or device, controlling or modelinginstruments, controlling or measuring a system or process, managing anetwork, or for modeling or simulating devices, may be referred to as avirtual instrument (VI).

[0097] As shown in FIG. 1, at least one of the computer systems 82and/or 90 may be referred to as the “main” computer system, i.e., thecomputer system used by the user in creating, using and/or executing aconfiguration diagram. For example, computer system 82 may be referredto as the main computer system. Thus, the computer system 82 may includea display device operable to display a graphical user interface (GUI).The graphical user interface may comprise any type of graphical userinterface, e.g., depending on the computing platform. The GUI may beuseful in assembling, creating, using and/or executing a configurationdiagram as described herein. Multiple computer systems may also be usedin assembling a configuration diagram.

[0098] As described below, a configuration diagram may comprise one ormore device icons which each correspond to a device in the system. Aconfiguration diagram may also comprise one or more program icons whicheach correspond to a program in the system. A configuration diagram mayalso comprise one or more system icons and/or one or more applicationicons or project icons. A configuration diagram may comprise variousother icons, e.g., for I/O channels or data points of a device. Aconfiguration diagram may also display connections between icons, suchas physical connections between device icons and/or invocation orcaller/callee connections between program icons.

[0099] As described below, the configuration diagram may be useful inrepresenting the configuration of a system, e.g., for documentation orspecification purposes. The configuration design may also be useful indeploying programs among a plurality of devices in the system. Theconfiguration diagram may also be used in creating one or more programsand deploying these created programs in the system. The configurationdiagram may further be useful in displaying and/or executing anapplication comprising a plurality of programs distributed among aplurality of devices in a system. The configuration diagram may furtherbe useful in controlling device or program execution. The configurationdiagram may be used for other purposes as well. The display device mayalso be operable to display a graphical program block diagram of adeployed program, or other source code of a deployed program. Thedisplay device may also be operable to display a graphical userinterface or front panel of deployed programs, wherein the GUI or frontpanel of deployed programs may be selectively displayed using theconfiguration diagram.

[0100] The computer system 82 and/or 90 may include a memory medium(s)on which one or more computer programs or software components accordingto one embodiment of the present invention may be stored. For example,the memory medium may store one or more programs which are executable tocreate, present and/or allow use of a configuration diagram as describedherein. Also, the memory medium may store a programming developmentenvironment application used to create and/or execute programs. Forexample, the memory medium may store a graphical programming developmentenvironment application used to create and/or execute graphicalprograms, such as LabVIEW. The memory medium may also store variousprograms in the system. The memory medium may also store operatingsystem software, as well as other software for operation of the computersystem.

[0101] The term “memory medium” is intended to include an installationmedium, e.g., a CD-ROM, floppy disks 104, or tape device; a computersystem memory or random access memory such as DRAM, SRAM, EDO RAM,Rambus RAM, etc.; or a non-volatile memory such as a magnetic media,e.g., a hard drive, or optical storage. The memory medium may compriseother types of memory as well, or combinations thereof. In addition, thememory medium may be located in a first computer in which the programsare executed, or may be located in a second different computer whichconnects to the first computer over a network, such as the Internet. Inthe latter instance, the second computer may provide programinstructions to the first computer for execution.

[0102] The software programs which implement embodiments of the presentinvention may be stored in a memory medium of the respective computer82, or in a memory medium of another computer, and executed by the CPU.The CPU executing code and data from the memory medium thus may comprisea means for performing the methods described herein. For example, theCPU executing code and data from the memory medium may comprise a meansfor graphically specifying or creating a configuration diagram, creatingapplications or programs utilizing a configuration diagram and/orenabling a user to graphically distribute, deploy, configure and/orexecute programs among a plurality of different devices or nodes in asystem according to the description herein.

FIGS. 2A and 2B—Instrumentation and Industrial Automation Systems

[0103] The following describes embodiments of the present inventioninvolved with creating distributed applications which perform test,measurement and/or automation functions, including control and/ormodeling of instrumentation or industrial automation hardware. However,it is noted that the present invention can be used for a plethora ofapplications and is not limited to instrumentation or industrialautomation applications. In other words, the following description isexemplary only, and the present invention may be used in any of varioustypes of systems. Thus, the system and method of the present inventionis operable to be used in any of various types of applications,including distributed systems which include other types of devices suchas multimedia devices, video devices, audio devices, telephony devices,Internet devices, network devices, etc.

[0104]FIG. 2A illustrates an exemplary instrumentation system 100 whichmay implement embodiments of the invention. The system 100 comprises ahost computer 82 which connects to one or more measurement devices orinstruments. The host computer 82 may comprise a CPU, a display screen,memory, and one or more input devices such as a mouse or keyboard asshown. Each of (or at least a subset of) the measurement devices mayinclude a processor and/or a programmable hardware element, and may becapable of receiving and executing programs in a distributedapplication. The computer 82 may couple to one or more other computers,such as computer 90, over a network, wherein the one or more othercomputers may form part of the distributed system. The computer 82 mayoperate with the one or more measurement devices to analyze, measure orcontrol a unit under test (UUT) or process 150, to perform simulation ofa system, such as hardware-in-the-loop simulation, to manage a network,or to perform system automation, among others.

[0105] The one or more measurement devices or instruments may include aGPIB instrument 112 and associated GPIB interface card 122, a dataacquisition board 114 and associated signal conditioning circuitry 124,a VXI instrument 116, a PXI instrument 118, a video device or camera 132and associated image acquisition (or machine vision) card 134, a motioncontrol device 136 and associated motion control interface card 138,and/or one or more computer based instrument cards 142, among othertypes of devices.

[0106] The GPIB instrument 112 may be coupled to the computer 82 via theGPIB interface card 122 provided by the computer 82. In a similarmanner, the video device 132 may be coupled to the computer 82 via theimage acquisition card 134, and the motion control device 136 may becoupled to the computer 82 through the motion control interface card138. The data acquisition board 114 may be coupled to the computer 82,and may interface through signal conditioning circuitry 124 to the UUT.The signal conditioning circuitry 124 may comprise an SCXI (SignalConditioning eXtensions for Instrumentation) chassis comprising one ormore SCXI modules 126.

[0107] The GPIB card 122, the image acquisition card 134, the motioncontrol interface card 138, and the DAQ card 114 are typically pluggedin to an I/O slot in the computer 82, such as a PCI bus slot, a PC Cardslot, or an ISA, EISA or MicroChannel bus slot provided by the computer82. However, these cards 122, 134, 138 and 114 are shown external tocomputer 82 for illustrative purposes. These devices may also beconnected to the computer 82 through a serial bus or through othermeans.

[0108] The VXI chassis or instrument 116 may be coupled to the computer82 via a VXI bus, MXI bus, or other serial or parallel bus provided bythe computer 82. The computer 82 may include VXI interface logic, suchas a VXI, MXI or GPIB interface card (not shown), which interfaces tothe VXI chassis 116. The PXI chassis or instrument may be coupled to thecomputer 82 through the computer's PCI bus.

[0109] A serial instrument (not shown) may also be coupled to thecomputer 82 through a serial port, such as an RS-232 port, USB(Universal Serial bus) or IEEE 1394 or 1394.2 bus, provided by thecomputer 82. In typical instrumentation control systems an instrumentwill not be present of each interface type, and in fact many systems mayonly have one or more instruments of a single interface type, such asonly GPIB instruments.

[0110] The measurement devices or instruments may be coupled to a unitunder test (UUT) or process 150, or may be coupled to receive fieldsignals, typically generated by transducers. The system 100 may be usedin a data acquisition and control application, in a test and measurementapplication, an image processing or machine vision application, aprocess control application, a man-machine interface application, anetwork management application, an automation system, a simulationapplication, or a hardware-in-the-loop validation application, amongothers.

[0111]FIG. 2B illustrates an exemplary industrial automation system 160which may implement embodiments of the invention. The industrialautomation system 160 is similar to the instrumentation or test andmeasurement system 100 shown in FIG. 2A. Elements which are similar oridentical to elements in FIG. 2A have the same reference numerals forconvenience. The system 160 may comprise a computer 82 which connects toone or more devices or instruments. The computer 82 may comprise a CPU,a display screen, memory, and one or more input devices such as a mouseor keyboard as shown. Each of the devices shown in FIG. 2B may include aprocessor and/or a programmable hardware element, and may be capable ofreceiving and executing programs in a distributed application. Thecomputer 82 may couple to one or more other computers, such as computer90, over a network, wherein the one or more other computers may formpart of the distributed system. The computer 82 may operate with the oneor more devices to measure or control a process or device 150. Thedistributed system may perform an automation function, such as MMI (ManMachine Interface), SCADA (Supervisory Control and Data Acquisition),portable or distributed data acquisition, process control, advancedanalysis, or other control.

[0112] The one or more devices may include a data acquisition board 114and associated signal conditioning circuitry 124, a PXI instrument 118,a video device 132 and associated image acquisition card 134, a motioncontrol device 136 and associated motion control interface card 138, afieldbus device 170 and associated fieldbus interface card 172, a PLC(Programmable Logic Controller) 176, a serial instrument 182 andassociated serial interface card 184, or a distributed data acquisitionsystem 185, such as the Fieldpoint system available from NationalInstruments, among other types of devices.

[0113] The DAQ card 114, the PXI chassis 118, the video device 132, andthe image acquisition card 134 may be connected to the computer 82 asdescribed above. The serial instrument 182 may be coupled to thecomputer 82 through a serial interface card 184, or through a serialport, such as an RS-232 port, provided by the computer 82. The PLC 176may couple to the computer 82 through a serial port, Ethernet port, or aproprietary interface. The fieldbus interface card 172 may be comprisedin the computer 82 and may interface through a fieldbus network to oneor more fieldbus devices. Each of the DAQ card 114, the serial card 184,the fieldbus card 172, the image acquisition card 134, and the motioncontrol card 138 are typically plugged in to an I/O slot in the computer82 as described above. However, these cards 114, 184, 172, 134, and 138are shown external to computer 82 for illustrative purposes. In typicalindustrial automation systems a device will not be present of eachinterface type, and in fact many systems may only have one or moredevices of a single interface type, such as only PLCs. The devices maybe coupled to the device or process 150.

[0114] As used herein, the term “measurement device” or “instrument” isintended to include any of the devices that are adapted to be connectedto a computer system as shown in FIGS. 2A, 2B and 3, traditional“stand-alone” instruments, as well as other types of measurement andcontrol devices. The term “measurement function” may include any type ofdata acquisition, measurement or control function, such as thatimplemented by the instruments shown in FIGS. 2A, 2B and 3. For example,the term “measurement function” includes acquisition and/or processingof an image. As described below, a distributed program (e.g., adistributed graphical program) may be created that implements ameasurement function. For example, the program may be used to acquire asignal and perform the measurement function on the acquired signal.

[0115] In the embodiments of FIGS. 2A and 2B above, one or more of thevarious instruments may couple to the computer 82 over a network, suchas the Internet. In one embodiment, the user operates to select one ormore target instruments or devices from a plurality of possible targetdevices for programming or configuration according to the methodsdescribed herein. Thus the user may create a program on a computer, suchas computer 82, and use the program in conjunction with one or moretarget devices or instruments that are remotely located from thecomputer 82 and coupled to the computer 82 through a network. Asdescribed below, according to one embodiment of the invention, the usermay use a configuration diagram to graphically create and distribute ordeploy programs among a number of different devices in a distributedsystem. The configuration diagram may also be used to initiate executionof the programs, and optionally to control and/or monitor execution ofthe programs.

[0116] Software programs which perform data acquisition, analysis and/orpresentation, e.g., for measurement, instrumentation control, industrialautomation, or simulation, such as in the applications shown in FIGS. 2Aand 2B, may be referred to as virtual instruments.

[0117] Although in the preferred embodiment the methods described hereinare involved with measurement and automation applications, includingdata acquisition/generation, analysis, and/or display, and forcontrolling or modeling instrumentation or industrial automationhardware, as noted above the present invention can be used for aplethora of applications and is not limited to measurement,instrumentation or industrial automation applications. In other words,FIGS. 2A and 2B are exemplary only, and the present invention may beused in any of various types of systems. Thus, the system and method isoperable for creating and using configuration diagrams for deployingprograms in distributed systems for any of various types ofapplications.

[0118] Network System

[0119] As one example, embodiments of the invention may be used tocreate, configure, deploy and/or execute devices and/or programs fornetwork systems. Exemplary network systems may include a main computersystem that couples to one or more network devices, such as switches,bridges, routers, hubs, network processors, etc. A configuration diagramfor a network system may include device icons that represent the variousnetwork devices, as well as program icons that represent programs in thesystem. Programs may be created, configured and/or deployed among thenetwork devices, (including having their invocation relationshipschanged) using the configuration diagram and the methods describedherein. Commercial (or custom) network management products may also beconfigured and/or deployed according to various embodiments of themethods described below, e.g., network management products for mapping,analyzing, configuring, controlling or otherwise managing networkarchitecture, operations, and/or functionality. For example, networkfunctions may include, but are not limited to, network traffic loggingand/or traffic analysis, e.g., data throughput, latency, topography,etc., as well as routing, testing, and so forth. Examples of networkmanagement products include NetView provided by IBM Tivoli Software, BMCSoftware's Patrol, and SANPoint Control by Veritas Software Corporation,among others.

FIG. 3—Distributed Measurement System

[0120]FIG. 3 is a block diagram of an exemplary distributed measurementsystem. As shown, an exemplary measurement system may include a computersystem 82 having a display. The computer system 82 may couple throughone or more networks or buses to various measurement devices.

[0121] In this exemplary embodiment, the computer 82 may couple throughthe Internet to a second computer 90 and to a database 92. The computer82 may couple to a PCI/PXI chassis 118 comprising one or more DAQ cards,which in turn couple to one or more Plug & Play analog sensors 123 orother sensors 127. The computer 82 may couple to a distributed I/Osystem (or distributed data acquisition system) 185, such as theFieldpoint system available from National Instruments, which in turncouples to one or more Plug & Play analog sensors 123 or other sensors127. The computer 82 may couple to a PCI/PXI chassis 118 comprising oneor more industrial network cards, such as a CAN interface card 173 and aserial interface card 184, which in turn may couple to one or morenetworked smart sensors 125. The computer 82 may couple to a PXI system118 and/or distributed I/O system 185, which in turn couples to one ormore DAQ modules 115 connected in a wired manner, such as through aserial, parallel, or network bus. The DAQ modules 115 may couple to oneor more Plug & Play analog sensors 123, smart sensors 125, or othersensors 127. The PXI system 118 and/or distributed I/O system 185 mayalso couple to one or more wireless DAQ modules 117 connected in awireless manner. The wireless DAQ module 117 may couple to one or morePlug & Play analog sensors 123 and/or other sensors 127.

[0122] The exemplary distributed measurement system may include a RIO(Reconfigurable I/O) system as described in U.S. Provisional PatentApplication Serial No. 60/312,242 titled “System and Method forGraphically Creating, Deploying and Executing Programs in a DistributedSystem” filed Aug. 14, 2001.

[0123] The computer system 82 may serve as the central console (or maincomputer system) of the distributed measurement system. The display ofthe computer system 82 may be used to assemble a configuration diagramof the distributed measurement system. The configuration diagram mayinclude various device icons that represent or correspond to the variousphysical (“real”) devices, and possibly virtual or simulated devices,that are present in the distributed measurement system. Theconfiguration diagram shown on the display may also be used to create,configure and/or deploy programs to any of the various devices in thedistributed measurement system.

[0124] The main computer system 82 may be part of the system thatexecutes programs during operation of the system. Alternatively, themain computer system 82 may be used solely to create a configurationdiagram and dispatch, configure or deploy programs to the variousdevices. In this latter embodiment, after deployment, the variousprograms may execute without further involvement of the main computersystem 82.

[0125] In one embodiment, the configuration diagram for the system shownin FIG. 3 would resemble, e.g., be similar or identical in appearanceto, the block diagram shown in FIG. 3. Thus, for the physical systemrepresented by the block diagram in FIG. 3, the configuration diagramfor this system that is displayed on a computer display may also havethe appearance of FIG. 3. Thus one goal of the configuration diagram fora system is to represent in an intuitive manner the system that theconfiguration diagram represents. Other examples of configurationdiagrams are shown in FIGS. 21A and 21B. Simple configuration diagramsused to illustrate graphical deployment of programs are shown in FIGS.15-20. FIGS. 21A and 21B illustrate more complex configuration diagrams.

FIG. 4—Computer System Block Diagram

[0126]FIG. 4 is a block diagram representing one embodiment of thecomputer system 82 and/or 90 illustrated in FIGS. 1, 2A, 2B or 3. It isnoted that any type of computer system configuration or architecture canbe used as desired, and FIG. 4 illustrates a representative PCembodiment. It is also noted that the computer system may be a generalpurpose computer system, a computer implemented on a VXI card installedin a VXI chassis, a computer implemented on a PXI card installed in aPXI chassis, or other types of embodiments. Elements of a computer notnecessary to understand the present description have been omitted forsimplicity.

[0127] The computer may include at least one central processing unit orCPU 160 which is coupled to a processor or host bus 162. The CPU 160 maybe any of various types, including an x86 processor, e.g., a Pentiumclass, a PowerPC processor, a CPU from the SPARC family of RISCprocessors, as well as others. Main memory 166 is coupled to the hostbus 162 by means of memory controller 164. The main memory 166 may storeone or more programs which implement an embodiment of the invention, andmay also store one or more programs which may deployed to devices in adistributed system according to an embodiment of the invention. The mainmemory may also store a program development environment, operatingsystem software, as well as other software for operation of the computersystem.

[0128] The host bus 162 may be coupled to an expansion or input/outputbus 170 by means of a bus controller 168 or bus bridge logic. Theexpansion bus 170 may be the PCI (Peripheral Component Interconnect)expansion bus, although other bus types can be used. The computer 82comprises a video display subsystem 180, hard drive 182, and networkinterface 181, coupled to the expansion bus 170. The expansion bus 170may also include various exemplary devices such as a data acquisitionboard 114 and a reconfigurable measurement device or instrument 190.Each of the data acquisition card 114 and the reconfigurable measurementdevice or instrument 190 may include a processor and memory and/or aprogrammable hardware element for receiving and executing deployedprograms.

FIG. 5—System for Creating and Using Configuration Diagrams

[0129]FIG. 5 illustrates the software programs of an exemplary systemfor creating and using configuration diagrams according to an embodimentof the invention. FIG. 5 illustrates an exemplary system which includesthe distributed LabVIEW integrated development environment (IDE). Thesystem shown in FIG. 5 may be used for managing a distributed system asdescribed herein.

[0130] As shown, the system includes a graphical program editor orgraphical program development environment, e.g., a LabVIEW editor 704.The system also may include one or more graphical programs, e.g., mayinclude a block diagram and/or front panel 706 of a graphical program.The block diagram and front panel may be created in any of variousgraphical program development environments.

[0131] The system may also include a system editor 732. The systemeditor may be used for creating a configuration diagram 712, alsoreferred to as a system panel. In the present application, the terms“system panel” and configuration diagram” are used interchangeably. Theconfiguration diagram 712 may include a plurality of nodes or icons 714which represent items 718 in a system, such as devices, machines,programs, applications, projects or other elements in the configurationdiagram 712. The configuration diagram 712 may also illustrate therelationship between nodes using connections or links 716 as describedherein.

[0132] The systems editor 732 may also include configuration panels 734,which are similar to property pages. The configuration panels 734 mayinclude system configuration panels 736 for configuring different systemconfiguration items such as network parameters 738, e.g., IP, security,etc 740. The configuration panels 734 may also include input/outputconfiguration panels 742 for configuring I/O points. The configurationpanels may also include the ability for configuring data points (e.g.,tags) 744 including methods, properties and panels 746. Theconfiguration panels 734 may also include service configuration panels750 for configuring various services, as described below.

[0133] The system described in FIG. 5 may be used for a plurality ofdifferent purposes. The system may be used to represent a system, deployprograms in the system, distribute data among devices or programs in thesystem, and perform various other functions. The system may providevarious levels of views. For example, the system configuration diagrammay present a view of the entire system, i.e., an entire system view; anindividual system view, i.e., a view of individual system within theentire system; an application view, i.e., a view of the various programsor software applications present in the system; and a programdevelopment view, such as a view of a program development environment,such as LabVIEW, Visual Basic, etc. In one embodiment, the systemincludes tight integration with a graphical program developmentenvironment such as LabVIEW. The configuration diagram may alsorepresent the system in a hierarchical manner, and the user may be ableto “drill down” in the configuration diagram to view greater detail onvarious subsystems or devices.

[0134] Flowcharts

[0135] The flowcharts described herein illustrate various embodiments ofthe present invention, and various other embodiments are alsocontemplated. It is noted that various steps in the flowcharts describedherein may occur concurrently or in different orders than that shown.Further, some steps are optional and may be omitted, and/or additionalsteps not shown may be added, as desired. In general, where the contextso indicates, steps performed in the flowcharts below may be performedautomatically or programmatically, i.e., by a software program, and notby manual user action.

FIG. 6—Flowchart

[0136]FIG. 6 is a flowchart diagram illustrating operation of the usercreating or assembling a configuration diagram representing adistributed system, displaying program icons corresponding to programspresent in the distributed system, and configuring or deploying one ormore programs to various devices in the distributed system. FIG. 6illustrates one embodiment of the invention, and it is noted thatvarious embodiments of the invention may be used to create, view and useconfiguration diagrams using the concepts or methods described herein.

[0137] As shown, in step 202 a developer or user may assemble or createa configuration diagram which includes device icons that representdevices in the distributed system. Thus, in a system which comprises twoor more devices coupled to each other, such as through a network, aserial or parallel bus, or through wireless means, etc., the user maycreate or assemble a configuration diagram which includes a device iconfor each of the devices, or a subset of the devices, present in thesystem. The configuration diagram may also include program iconscorresponding to programs resident in the system, e.g., in the variousdevices.

[0138] In one embodiment, the user may manually select device icons froma graphical user interface, e.g., from a palette or menu, to bedisplayed in the configuration diagram. The user may also connect thedevice icons on the configuration diagram, such as by using a pointingdevice. For example, in creating or modifying a configuration diagram,the user can associate, e.g., drag and drop, or otherwise connect, afirst device icon to a second device icon. For example, the user may usea pointing device (e.g., a mouse), and may possibly use a “wiring tool”icon on the display, to connect a first device icon to a second deviceicon. This may cause a connection, e.g., a wire, to appear between thedevice icons to indicate a relationship or coupling between the two (ormore) device icons.

[0139] In one embodiment, the configuration diagram may be automaticallyor programmatically created by the computer system 82, or by separateserver system 90, based on an automatic detection of devices coupled tothe computer system 82. As used herein , the terms “programmatically” or“automatically” mean that the particular function is performed bysoftware, as opposed to being performed manually by the user. Forexample, Plug & Play software, or other similar detection software, maydetect devices present in the system and automatically display deviceicons in the configuration diagram representing these detected devices.The software may also automatically display connections or links betweenthe device icons which indicate the detected buses or interfacesconnecting the devices. In another embodiment, at least a portion of theconfiguration diagram may be automatically or programmatically created,and a portion of the configuration diagram may be created at leastpartly based on manual user input. For example, software may detect anddisplay device icons and links corresponding to a subset of the devicesin the system, and the user may select (and “wire up” or connect) deviceicons corresponding to other (e.g., non-detected or virtual) devicesfrom a palette or menu.

[0140] The device icons preferably have an appearance which correspondsto the device they represent. This allows the viewer to easily view andunderstand what devices are present in the distributed system. In oneembodiment, information may be displayed proximate to various deviceicons to indicate information about the device, such as type of device,geographic location of the device, calibration information, etc. Thisinformation may be selectively displayed when the user selects (e.g.,right clicks) a respective device icon. In other embodiments, theinformation may be displayed in response to user activity with respectto the device icon, e.g., in response to the user right-clicking on thedevice icon, or in response to the cursor “hovering” over the deviceicon, etc.

[0141] The connection that is displayed between two device icons may becontext sensitive. In other words, the connection that is displayed orcreated on the display may have a context or appearance that isassociated with the types of devices that are being connected, or thatis associated with the type of physical connection between therespective devices. For example, the PCI bus may be shown with a firsttype of visual representation, a USB (Universal Serial Bus) connectionmay be shown with a second type of visual representation, and anEthernet connection may be shown with a third type of visualrepresentation. Alternatively, or in addition, the connection that isdisplayed or created on the display may have a context or appearancethat is associated with the data type of the data, or type of material,being transmitted between the devices.

[0142] In one embodiment, Plug & Play software or other similardetection software may detect programs present in the system andautomatically or programmatically display program icons in theconfiguration diagram representing these detected programs. The softwaremay also automatically display connections or links between the programicons which indicate the detected invocation relationships of theprograms. In another embodiment, respective portions of theconfiguration diagram may be automatically or programmatically created,and a portion of the configuration diagram may be created at leastpartly based on manual user input. For example, software may detect anddisplay program icons and links corresponding to a subset of theprograms in the system, and the user may use a GUI to register otherprograms present in the system. The program icons may be displayeddirectly in the configuration diagram, e.g., proximate to the devices inwhich they reside, or linked to the device icons. Alternatively, theprogram icons may initially appear on a separate palette or window,e.g., for deployment to the various devices. The user may manually“connect” or “wire up” links between various program icons to establishor modify invocation relationships among the programs as describedfurther below.

[0143] In one embodiment, the configuration diagram is operable toperform type checking of connections between device icons, e.g., toverify that a first device corresponding to a first device icon caninterface to a second device corresponding to a second device icon. Forexample, when the user draws a link between a first device icon and asecond device icon, software may analyze the interface types of the twodevices to ensure that the connection is proper. The configurationdiagram may also be operable to perform type checking of connectionsbetween program icons, e.g., to verify that a first programcorresponding to a first program icon can invoke (or be invoked by) asecond program corresponding to a second program icon. For example, whenthe user draws a link between a first program icon and a second programicon, software may analyze the program types of the two programs toensure that the invocation can be performed.

[0144] In addition, program icons may also have an appearance toindicate the type of program, e.g., graphical program, text-basedprogram, hardware configuration program, etc. Also, the connection thatis displayed between two program icons may be context sensitive. Forexample, the connection between two program icons may have a context orappearance that is associated with the type of connection between theprograms, e.g., caller/callee and direction (e.g., using an arrow),event passing, etc.

[0145] The configuration diagram may be used to define all of thedesired system components, including measurement phenomena, transducers,connector blocks, cabling, measurement hardware, and program components.The configuration diagram may also be used to enable distributedmanagement of the system components, including distributed definition ofcomponents, discovery of local and remote components that are presentand virtual, web service based interaction, etc. For example, discoverymay include not only determining the presence of devices, but may alsoinclude determining each device's configuration, sub-devices,connectivity between devices, and so on.

[0146] In one embodiment, the user may assemble a configuration diagramthat represents a system that the user desires. Thus, the user mayselect among device icons in a palette and generate a configurationdiagram representing a desired system. In this embodiment, theconfiguration diagram is a specification of a desired system. Aconfiguration diagram may also include a first portion that representsan actual system (one or more physically present devices) and a secondportion that represents a desired system (one or more non-presentdevices).

[0147] In one embodiment, the user may use the configuration diagram asa mechanism for specifying devices to be purchased from a vendor. Forexample, the user can assemble a configuration diagram including deviceicons (and/or program icons) which represent devices (and/or programs)that the user desires to use or purchase for his/her system. The usermay then connect to a server computer system and provide theconfiguration diagram as a specification for the devices and/or programsthe user desires to purchase. The server computer system, which may belocated at a manufacturing site, may receive the configuration diagram,determine the desired devices (and/or programs) from the configurationdiagram, and present information to the user indicating the total costfor the requested devices (and/or programs). The user may then choose topurchase one or more of the recommended devices (and/or programs) fromthe server computer system. These devices may then be shipped to theuser. In another embodiment, the server may programmatically query thedevices and/or programs present in the user system, and generate aconfiguration diagram that is displayed on the user's computer systemrepresenting the current state of the user's system. The user may thenadd device icons and/or program icons from a palette on the server orthe client computer to indicate desired modifications to the usersystem. This updated configuration diagram may then be provided back tothe server as a purchase request as described above.

[0148] In step 204 the user may create one or more programs whichperform a desired function within the distributed system. Alternatively,or in addition, one or more programs may be automatically orprogrammatically created (created by a software program), based on userinput or requirements. For example, the computer system may display agraphical user interface which is used by the user to enter requirementsor desired operation of a program. The system may then programmaticallycreate a program based on these requirements. This programmatic creationof programs may be performed by the user's computer system 82 or aseparate server computer system 90.

[0149] The user (or computer system) may create one or more text-basedprograms in text-based programming languages such as C, C++, Fortran,Basic, Cobol, Java, etc. Software programs may be created or used whichare software objects or software components such as C++ objects, ActiveXcontrols, Java objects, etc. The user may also create one or moregraphical programs in various graphical programming developmentenvironments. In the preferred embodiment, the computer system includesthe LabVIEW graphical programming development system for creatingLabVIEW programs. As described below, the user may create and/or modifyprograms using the configuration diagram. This operation is discussedwith respect to FIGS. 26, 27, 32 and 33.

[0150] Alternatively, the user may simply use one or more pre-existingprograms that have been previously created. The user may use programsstored on the computer system 82 or stored on any of the various remotedevices. In addition, where the computer system 82 is coupled to anetwork, such as the Internet, the user may use programs stored on aserver (e.g., server 90) coupled to the network.

[0151] For example, in a measurement application, a server at NationalInstruments may store or host various measurement applications orprograms that can be used by any user, or registered users. The user maychoose to connect to a server and view icons corresponding to theprograms, applications, or projects present on the server, andincorporate these program icons (or application or project icons) intothe configuration diagram using graphical association techniquesdescribed herein. The user may purchase a program by dragging anddropping a program icon from a palette displayed by the server 90 ontothe user's configuration diagram. The user may be required to submitpayment to purchase programs from a third party server. As describedabove, the user may also choose to connect to a server for programmaticgeneration of programs.

[0152] The user may also create one or more programs which perform adesired function within the distributed system using the configurationdiagram. For example, the user may create a graphical program whichcommunicates with one or more measurement devices by dragging anddropping corresponding device icons into the graphical program diagram(or user interface). As one example, the user may open a LabVIEW blockdiagram and create a While loop structure. The user may then drag anddrop device icons corresponding to sensors into the While loopstructure. This may cause the graphical program diagram to be configuredto access these sensors and read data produced by these sensors. Thisoperation is described with respect to FIGS. 26 and 27A-E. The user mayalso drag and drop icons representing data points or I/O channels intothe graphical program diagram (or user interface) to configure thegraphical program to access (read or write) these data points or I/Ochannels. Programs may also be created and/or modified in response toother actions performed by the user, as described herein.

[0153] In step 206 the system may display an iconic relationship view ofthe various programs, e.g., graphical programs, present within thesystem. The iconic relationship view may comprise icons (“programicons”) representing various programs, wherein the program icons may bearranged and/or interconnected with links to indicate theirrelationship. The program icons may be arranged proximate to, and/orconnected by a link to, the respective device icons corresponding to thedevices in which the programs are stored. This may visually indicatewhich programs are stored on which devices. Alternatively, the iconicrelationship view of the various programs may be displayed separatelywithout the device icons. The iconic relationship view may comprise anobject-oriented view, a hierarchy view, a tree view, a data flow view,an execution flow view, a control flow view, or combinations thereof.

[0154] Thus, in the case of a program which is configured as a hierarchyof a main program and one or more sub-programs, the system may display ahierarchy view comprising an icon representing the main program and anicon representing each of the one or more sub-programs. The relationshipview may also display connections or links between the program icons. Inthe hierarchy view, the program icons are arranged and are preferablyconnected to visually indicate the hierarchy. In the case of a pluralityof software objects configured to invoke methods and trigger events oneach other, the system may display an object-oriented view comprising anicon representing each of the programs, and possibly connectionsindicating the method invocation and/or event messaging. In the case ofa graphical program which is configured as a hierarchy of a maingraphical program and one or more sub-graphical programs (e.g., a mainVI and one or more sub-VIs), the system may display a hierarchy viewcomprising an icon representing each of the main graphical program, anicon representing each of the one or more sub-graphical programs, andconnections between the program icons to visually indicate thehierarchy. An example of a hierarchy view of graphical programs is shownin FIGS. 15-20 and 21B. This allows the viewer to easily view theprograms present in the system which may be used in configuring thedistributed system. In another embodiment, the program icons resident ina device may simply be displayed, without any type of relationship view.

[0155] The iconic relationship view of the various software programs maybe displayed in a separate window on the display, or may be displayed inthe configuration diagram. For example, where most or all of theprograms are initially comprised in the main computer system 82, theprogram icons may be displayed in the configuration diagram proximate tothe device icon (or shown connected to the device icon) corresponding tothe main computer system 82, or in a separate window to avoid clutteringthe configuration diagram. In one embodiment, the user can selectvarious views of the configuration diagram, as described herein.

[0156] In step 206 the system may also display an iconic relationshipview of the various devices present within the system. For example, theuser may choose a menu option, such as shown in FIG. 18, to display thecaller/callee relationships between different devices present in thedistributed system.

[0157] In one embodiment, the program icons may be visually displayedindicating an association with respective device icons representingrespective devices in which the programs are stored and/or executed. Forexample, the program icons may be visually displayed proximate torespective device icons representing respective devices in which theprograms are stored and/or executed. It should be noted that as usedherein, the term “proximate” refers to being on or near an item, e.g.,an icon, i.e., if a first icon is displayed proximate to a second icon,the first icon is sufficiently close to the second icon such that theuser would presume or understand an intended relationship between thetwo icons. Thus, a program icon may be located proximate to a deviceicon to represent the fact that the corresponding program is storedand/or executed on the corresponding device. In another embodiment, linkicons may be displayed coupling the program icons with the respectivedevice icons. Other graphical techniques associating the program iconswith the respective devices are also contemplated.

[0158] In step 208 the user may graphically configure program deploymentand/or invocation using the configuration diagram. The user maygraphically configure program deployment and/or invocation by providinggraphical user input to the configuration diagram to associate (e.g.,drag and drop), icons with other icons, change connections betweenicons, etc.

[0159] For example, in one embodiment the user may select variousprogram icons, e.g., graphical program icons, from the relationship view(within or outside the configuration diagram) and associate (e.g., dragand drop) them with various device icons contained in the configurationdiagram. The user may also select a program icon and associate theprogram icon with another program icon in the configuration diagram.This may cause a deployment of a program to another device, or mayconfigure a program invocation relationship (caller/callee relationship)between programs, or may cause another type of operation. For example,the operation of associating program icons with device icons (or otherprogram icons) in the configuration diagram may operate to deploy,either immediately or when the use selects “apply”, the respectiveprograms on the various devices which correspond to the device icons.

[0160] Deploying a program may comprise: 1) moving the program from afirst device to a second device (where the program is deleted from thefirst device), 2) copying the program from a first device to a seconddevice (where the program remains stored on the first device), 3)transferring or moving the program from a first device to a seconddevice for remote execution on the second device, wherein the programmoved to the second device is invoked for execution by a program on thefirst device, and wherein at least one program on the first device maybe configured or modified to invoke the moved program on the seconddevice; 4) transferring remote execution of the program from a firstdevice to a second device, wherein the program is originally to beremotely invoked on the first device, and after the operation theprogram is remotely invoked on the second device, wherein the remoteinvocation is performed by a program or application on a differentdevice, such as the main computer system (FIG. 11); or 5) creating acall or invocation in a program on the second device to invoke theprogram on the first device, wherein the program remains on the firstdevice, and at least one program on the second device may be configuredor modified to invoke the program on the first device (FIG. 12). Furtherdetails of the deployment of programs on various devices is describedwith respect to the flowcharts of FIGS. 9-12 and the screen shots ofFIGS. 15-20. Various other deployment operations are also contemplated.

[0161] As another example, in one embodiment the user may draw a link orconnection between two program icons to configure an invocationrelationship between the program icons. For example, the user mayposition a pointing device at a first program icon and draw a link fromthe first program icon to a second program icon. The displayed link mayinclude an arrow or other graphical means to indicate the direction ofthe invocation, i.e., that the first program icon is invoking the secondprogram icon, and not vice versa. This operation of drawing the linkbetween the first and second program icons may operate to modify thefirst program represented by the first program icon to invoke the secondprogram represented by the second program icon. In one embodiment, thesource code of the first program may be displayed, or a GUI may bedisplayed, so that the user can more precisely configure where and howthe first program invokes the second program.

[0162] The user may also select an existing link or connection displayedbetween two program icons and may associate (e.g., graphically modify ordrag and drop) the end of one link to a different program icon to changean invocation relationship among the programs. For example, theconfiguration diagram may initially display a link connecting a firstprogram icon with a second program icon, indicating that a first programrepresented by the first program icon invokes a second programrepresented by the second program icon. The user can select the end ofthe link proximate to the second program icon and graphically move ordrag this end of the link to a third program icon to configure the firstprogram to invoke a third program represented by the third program icon.

[0163] As another example, the user may select a device icon, or an iconrepresenting a data point or I/O channel, and associate (e.g., drag anddrop) the device icon with a program icon in the configuration diagram.This may be used in creating a program, e.g., may cause the creation ofcode in the program to access the device, data point, or I/O channel.For example, an icon representing a device, data point and/or I/Ochannel may be associated with or dropped in the source code or userinterface of a program, e.g., the block diagram or front panel of agraphical program. This may cause various operations to be performed, asdescribed below.

[0164] Various other operations using the configuration diagram are alsocontemplated.

[0165] The term “associate” used herein generally means or includes sometype of user input that is provided to indicate that one icon should beassociated with another icon. Each icon may be a device icon, programicon, a link (link icon) displayed between device icons and/or programicons, a data point icon, an I/O channel icon, or another icon thatrepresents an element in the system. The term “associate” includesvarious types of graphical techniques, such as drag and drop techniques,and use of graphical user interface elements, such as menus, dialogboxes, etc. The term “associate” also encompasses the use of speechrecognition techniques to indicate that one icon should be associatedwith another icon.

[0166] The “association” may indicate that some relationship should beestablished between the two icons (a relationship between programsand/or devices represented by the icons, e.g., an invocation orcaller/callee relationship, etc.), or that some operation should beperformed (e.g., deployment of a program, creation or modification of aprogram, etc.).

[0167] As noted above, the operation of associating icons with othericons, e.g., associating program icons with device icons (or otherprogram icons), in the configuration diagram may be performed with “dragand drop” techniques, menu-based techniques, dialog box techniques,speech recognition techniques, or other techniques. The “drag and drop”method may comprise the user selecting an icon (device icon, programicon, link icon, etc.) with a pointing device (e.g., a mouse) anddragging the icon on the display to be on top of or proximate to anothericon, such as another device icon, program icon, or link icon. Drag anddrop techniques are well known in the art. Other similar graphical inputtechniques may also be used.

[0168] As one example, the operation of associating program icons withdevice icons in the configuration diagram may operate to deploy, orcause to be deployed, the respective programs on the various deviceswhich correspond to the device icons. Stated another way, if the userselects a first program icon and associates (e.g., drags and drops) thisfirst program icon on to a first device icon which represents a firstdevice, and the user optionally selects “apply”, this operates to deploya first program corresponding to that first program icon on to the firstdevice which corresponds to that first device icon. The “drag and drop”method may comprise the user selecting the first program icon with apointing device (e.g., a mouse) and dragging the first program icon onthe display to be on top of or proximate to the first device icon. Thisprovides a greatly simplified mechanism for deploying programs onvarious devices in a distributed system. Further details of thedeployment of programs on various devices is described with respect tothe flowcharts of FIGS. 9-12 and the screen shots of FIGS. 15-20.

[0169] In step 210 the configuration diagram may be updated as the userperforms iconic operations, such as the deployment operations discussedabove. Thus the configuration diagram may display an updated iconicrelationship view of the distributed programs and distributed devices asthe user associates (e.g., drags and drops) the program icons on thedevice icons, the program icons on other program icons, the device iconson other device icons, etc. For example, as the user drags and dropsprogram icons (e.g., from the configuration diagram) on to variousdevice icons on the configuration diagram in step 208, the system mayoperate to display the updated relationship (e.g., hierarchy) ofprograms proximate to, e.g., underneath, the respective device icon towhere they have been deployed. For example, FIGS. 15-20 illustrate aconfiguration diagram which shows a main graphical program 402 and foursub-graphical programs 404A-D at the next level of the hierarchy.

[0170] In one embodiment, when the user associates program icons withvarious device icons contained in the configuration diagram, theconfiguration diagram is immediately updated accordingly, but thisoperation of associating does not operate to deploy programs at thattime. Rather, the user may be required to select an “apply” feature forthe deployment to actually occur. This allows the user to view variousconfiguration diagram options before a deployment actually occurs. Inanother embodiment, the system may provide a configuration diagrampreview window where the user can view proposed changes to theconfiguration diagram prior to these changes being made in the actualconfiguration diagram. In another embodiment, the configuration diagram(and/or the preview window) may support multiple levels of undo/redo,thereby allowing the user to “back out” changes that have been made.

FIG. 7—Creating a Configuration Diagram

[0171]FIG. 7 is a flowchart diagram illustrating an exemplary embodimentof operation of creation or assembly of a configuration diagramrepresenting a system.

[0172] As shown in FIG. 7, a developer or user may assemble or create(and/or a software program may create) a configuration diagram whichincludes device icons that represent devices in the distributed system.The configuration diagram may also include program icons that representprograms in the system. The configuration diagram may further includeother icons or elements, such as links displayed between device iconsand/or program icons, icons representing I/O channels, iconsrepresenting data points or tags, and icons representing other elementsin the system, e.g., named configurations (such as named channels) etc.

[0173] Thus, in a distributed system which comprises two or more devicesconnected to each other, such as through a network, a serial or parallelbus, or through wireless means, etc., the user or system may create orassemble a configuration diagram which includes a device icon for eachof the devices present in the system, program icons created for programsresident in the devices, and icons representing I/O channels, datapoints, named configurations etc. The configuration diagram may at leastpartially (or completely) be automatically or programmatically created.For example, the configuration diagram may be created by softwareexecuting on the computer system 82 which is part of the system, or theconfiguration diagram may be created by software executing on a separateserver computer 90 which analyzes the system and generates theconfiguration diagram for the computer system 82.

[0174] In step 222 the computer system 82 may display a graphical userinterface, such as a configuration dialog, which may be useful increating a configuration diagram. An exemplary configuration dialog isshown in FIG. 14. The configuration dialog may have various appearances,and FIG. 14 is an exemplary embodiment. The configuration dialog mayinclude various tabs, may include the ability to discover or manuallyadd new devices, and may visually display the various devices present(or “virtually present”) in the distributed system. The configurationdialog may include the ability to discover or manually add new programs,and may visually display the various program present (or “virtuallypresent”) in the distributed system. The configuration dialog may alsoinclude the ability to discover or manually add I/O channels, datapoints, or other items relevant to the system. In one embodiment wherethe configuration diagram is mostly or completely automatically orprogrammatically created, the configuration dialog may not be displayed.

[0175] In step 224 the computer system 82 may automatically orprogrammatically detect devices coupled to the computer system 82 and/orprograms present in the system. For example, Plug & Play softwareexecuting in the computer system 82 may have previously (such as atsystem boot time) automatically detected Plug & Play devices and/orprograms. Plug & Play software may also be invoked from theconfiguration dialog. Other application programs executing in thecomputer system 82 may also automatically detect devices present in thedistributed system, and may be optionally invoked from the configurationdialog. For example, the Measurement and Automation Explorer (MAX)software program from National Instruments may be used to automaticallydetect measurement and automation devices (such as those shown in FIGS.2A, 2B and 3) and/or programs present in the distributed system.Software may also automatically or programmatically detect otherelements in the system, such as I/O channels, data points, namedconfigurations, etc.

[0176] In one embodiment, a server (e.g., server 90) may access thesystem (e.g., computer system 82) over a network and automatically orprogrammatically detect elements in the system, such as devices coupledto the computer system 82, connections between devices, programsresident in the system, program relationships, I/O channels, datapoints, and possibly other elements. For example, a server 90 atNational Instruments may access a user's computer system 82 at a remotelocation and, optionally with the user's permission, detect devices andprograms installed in the user's system and cause a configurationdiagram to be displayed on the display of the user's computer system 82.

[0177] In step 226 the user may manually specify one or more devices,such as undetected devices. Thus, for those devices that were notautomatically detected, the user may be required to manually specifythese devices. In one embodiment, all devices present in the distributedsystem are automatically detected, and thus no manual specification isrequired. In step 226 the user may also manually specify one or moreprograms, such as undetected programs. The user may also manuallyspecify other elements.

[0178] In step 226 the user may also specify one or more non-present or“virtual” devices or programs. Thus, for those devices or programs whichthe user desires to be present in the distributed system, but which arenot actually currently physically present, the user may include a“placeholder” by creating a “virtual device icon” or “virtual programicon” that represents the non-present device or program, respectively.Virtual device icons and/or virtual program icons may also beautomatically or programmatically generated. For example, the user mayprovide input indicating the desired operation of the system representedby the configuration diagram, and the software may automatically displaya virtual device icon or virtual program icon representing a device orprogram, respectively, that the system may require to perform thedesired operation. Thus software may display suggested device or programicons based on the task requirements entered by the user. Virtualdevice/program icons are described further below.

[0179] In step 228 the user may select one or more devices, programs,and/or other elements for the distributed system. In other words, theuser may select one or more devices, programs, and/or other elements tobe not included in the distributed system shown in the configurationdiagram. For those elements (devices, programs, etc.) that are selectedto not be included, corresponding icons (device icons, program icons,etc.) may not appear in the configuration diagram, or may have analtered appearance, e.g., be “grayed out” or may be shown in a separatewindow.

[0180] For example, for those devices that are not selected (or areselected to not be included), corresponding device icons may not appearin the configuration diagram, or may have an altered appearance. Thisfeature may be used in situations where there are devices coupled to thecomputer system 82, but the user does not desire to use these devices atthe present time. Thus the user can choose to deselect these devices sothat corresponding device icons will not appear in the configurationdiagram. This helps to prevent cluttering the configuration diagram withdevice icons corresponding to unused or undesired devices. In analternate embodiment, device icons corresponding to unused or undesireddevices may appear in a separate palette of the configuration diagram sothat they do not clutter the configuration diagram, yet the user isreminded of their presence. In another embodiment, device iconscorresponding to unused or undesired devices may appear in theconfiguration diagram, but these device icons may be “grayed out” orhave a different appearance to indicate they are not being used. In asimilar manner, for programs that are not selected to be included,corresponding program icons may not appear in the configuration diagram,or may have an altered appearance. Non-selected program icons may appearin a separate palette. This also helps to prevent cluttering theconfiguration diagram with program icons corresponding to unused orundesired programs.

[0181] In one embodiment, all detected devices, programs and otherelements are displayed in the configuration diagram, and thus userselection in step 228 may not be performed.

[0182] In step 230 the computer system 82 may display a configurationdiagram including device icons, program icons, and possibly otherelements. In one embodiment, the configuration diagram includes deviceicons corresponding to all detected devices. Alternatively, the computersystem 82 may display the configuration diagram with only the devicesselected in step 228. As described above, the device icons eachpreferably have an appearance that visually indicates the type ofdevice. The configuration diagram may display connections between thevarious device icons to visually indicate how the devices are coupled toeach other. These connections may be automatically displayed, or createdby the user, or both. As described above, the connections displayedbetween the devices may each have an appearance that visually indicatesthe type of connection. The configuration diagram may also includeprogram icons corresponding to programs, as well as other elementsdescribed herein.

[0183] In one embodiment, the configuration diagram may presentdifferent views, such as an entire system view, a subsystem view, anindividual device view, a program relationship view, etc. Thus the usercan select different options to display the configuration diagram withdifferent views or different levels of granularity. Exampleconfiguration diagrams are shown in Figures FIG. 21A and 21B, as well asin other Figures.

[0184]FIG. 21A illustrates an exemplary configuration diagram comprisinga plurality of device icons. Certain of the device icons representcomputer systems, such as a “Data Mining” computer, a “MeasurementServer”, etc. Certain of the device icons represent measurement orautomation devices, such as a GPIB instrument, Fieldpoint Toaster, etc.

[0185] As noted above, the configuration diagram may include deviceicons that represent the various devices in the distributed system. Eachof the device icons preferably has an appearance which corresponds tothe device it represents. Thus, a computer system 82 may be representedby a device icon that has the appearance of a computer system. In asimilar manner, other device icons may have an appearance which issimilar to the appearance of the device it represents. This allows theviewer to easily view and understand what devices are present in thedistributed system.

[0186] In another embodiment, a program stored on a device mayoptionally be represented by a device icon. This may be desirable wherea certain program performs a “device-like” function. In anotherembodiment, a non-present device may have a device icon (virtual deviceicon), and the functionality of the non-present device may be simulatedby a program executing on the main computer system or another device.

[0187] The configuration diagram may include connections (“connectionicons”) such as lines, that are displayed between the various deviceicons to show the interrelationship or coupling between the respectivedevices. In one embodiment, the connections that are displayed may becontext sensitive to indicate the type of interconnection or interface(e.g., bus type), and/or the type of data or phenomena being providedbetween the devices.

[0188] The displayed connections between device icons may correspond tocouplings between the plurality of devices. In one embodiment, thedisplayed connections between respective device icons may have anappearance to visually indicate a type of connection between the devicescorresponding to the respective device icons. For example, the displayedconnections may have an appearance that varies according to one or moreof color, size or shading to indicate the type of connection between thedevices. The appearance of the respective connections may indicatewhether the connection is a network connection, internal bus connection,external parallel bus connection, external serial bus connection (e.g.,USB or IEEE 1394) or a wireless connection. The appearance of therespective connections may also, or instead, indicate the type of dataor material flow between devices. In another embodiment, theconfiguration diagram may include labels displayed proximate to theconnections to visually indicate types of connection. The displayedconnections or displayed information may also operate to indicatingcabling or connection requirements, or recommend cabling or connectiontypes between devices.

[0189] In a measurement application, the device icons may represent thevarious measurement devices present in the system, such as those shownin FIGS. 2A, 2B and 3. For example, there may be device icons presentfor any one or more of the various measurement or automation devicesshown in FIGS. 2A, 2B and 3. Thus, as one example, where a computersystem is coupled to a PXI chassis that includes a plurality of PXIinstrument cards comprised in the chassis, the configuration diagram mayinclude a device icon which represents the computer system, and a deviceicon which represents each of the respective PXI instruments comprisedin the PXI chassis. The configuration diagram may also optionallyinclude a device icon which represents the PXI chassis, with furtherdevice icons comprised in or proximate to the PXI chassis device iconrepresenting each of the respective PXI instrument cards. As anotherexample, where one or more smart sensors are present in the measurementsystem, device icons may be present which represent each of the varioussmart sensors. In a machine vision application, device icons may bepresent for a host computer system 82, an image acquisition board 134,and a camera 132, which may be a smart camera as desired. Thus, theconfiguration diagram graphically displays a plurality of device iconswhich represent the devices that are present in the system, for whichthe user is desiring to configure or create an application.

[0190] In step 232 the user may manually or automatically arrange thevarious icons on the configuration diagram. For example, theconfiguration diagram may include an “auto-arrange” feature whichautomatically arranges the device icons and/or program icons to improvethe appearance of the configuration diagram. The user may also manuallyarrange the device icons and/or program icons on the configurationdiagram as the user desires.

[0191] In one embodiment, one or more of the devices may communicategeographic location information indicating the geographic location ofthe device. For example, where the distributed system includes a firstcomputer system or other device located in Austin, Tex. and a secondcomputer system or other device located in San Jose, Calif., each ofthese devices may communicate their geographic location information. Theuser may optionally select a feature which causes the geographiclocation of each device (or a selected subset of devices) to bedisplayed on the configuration diagram. This enables the user to morereadily understand the distributed system.

[0192] The configuration diagram may include a “device view” that onlyshows interconnected device icons. The configuration diagram may alsoinclude a “program view” that shows program icons. The program view mayshow only program icons, or may show the program icons proximate therespective device icons on which they are stored. As discussed above, insteps 204 and 206 one or more existing or created programs may bedisplayed in a relationship view in the configuration diagram. Theprogram icons may be displayed proximate to (e.g., under) and/orconnected to the device icon on which they are stored or located(deployed). For example, programs that are stored on the main computersystem 82 are displayed proximate to the main computer system deviceicon. Alternatively, as mentioned above, the configuration diagram maysupport a program relationship view that displays only program icons,without device icons. Links may be displayed between the program iconsto indicate invocation (caller/callee) relationships.

[0193] Where the plurality of programs are configured to executeaccording to a specified relationship, the plurality of program iconsmay be displayed on the display according to the specified relationship.The plurality of program icons may thus be displayed to visuallyindicate the specified relationship of the plurality of programs, e.g.,according to their corresponding relationship or program executionhierarchy. FIGS. 15-20 and 21B show a configuration diagram with programicons arranged in a program execution hierarchy.

[0194] As shown in FIG. 8, in one embodiment in step 236 the user mayselect a device icon (e.g., by double clicking or right clicking on thedevice icon). This may cause certain actions to occur, or a menu mayopen with different selections. For example, in step 237 the programicons corresponding to the programs comprised on or deployed on thedevice may be shown. As noted above, the program icons corresponding tothe programs comprised on or deployed on the device may be shownproximate to the respective device icon, e.g., under the device icon,and/or connected to the device icon, as shown in FIGS. 15-20 and 21.Alternatively, the user may select a feature to show the program iconscorresponding to all of the device icons. The configuration diagram mayinitially also display various program icons that are stored with eachof the various devices.

[0195] As another example, the user may select a device icon in step 236to view various other elements contained in the respective device instep 238, such as I/O channels, data points, named configurations, andprograms stored in or deployed on the device.

[0196] Therefore, in one embodiment, the configuration diagram may beautomatically or programmatically created by the computer system 82based on an automatic detection of devices coupled to the computersystem 82. In another embodiment, the computer system 82 mayautomatically or programmatically create a first portion of theconfiguration diagram for devices that it detects as being coupled to orcomprised in the computer system 82, and the user may optionally createa second portion of the configuration diagram for devices that could notbe detected by the computer system 82 through automatic means, and/orwhich include virtual devices that are not physically present.

[0197] The computer system 82 preferably stores the configurationdiagram, e.g., data structures (which may be referred to asconfiguration data) corresponding to the configuration diagram. Thisconfiguration data may be saved in memory and reloaded on the system 82or on other devices.

[0198] Connecting Device Icons

[0199] In one embodiment, the user can use a wiring tool to connect twodevice icons, similarly to the wiring tool used in LabVIEW. This maycause a connection, e.g., a wire, to appear between the device icons toindicate that the devices are coupled to each other. As noted above,connections between two device icons may also be displayedautomatically. In one embodiment, the connection that is displayedbetween two device icons is context sensitive. In other words, theconnection that is displayed or created on the display has a context orappearance that is associated with the types of devices that are beingconnected, the type of physical interface (e.g., bus type), and/or thetype of data or information flow between the devices.

[0200] For example, where the link icon indicates the type of physicalinterface, when the user connects two device icons representing firstrepresenting first and second devices, the method may examine theinterface type supported by the first and second devices and generate aconnection or link between the two device icons having an appearancecorresponding to the interface type or bus type being used.Alternatively, the user may select a link or connection from a palettebased on the type of devices that the user desires to connect.

[0201] For example, where the link icon indicates the type ofinformation flow, if the user is connecting a device icon representing alaser to a device icon representing a mirror or other optical device,when the user associates the first device icon with the second deviceicon (e.g., by clicking on the first device icon and dragging the cursorto the second device icon to create the connection), the configurationdiagram may automatically draw a laser beam connection, i.e., aconnection icon which has the appearance of a laser beam or opticalsignal. This visually indicates to the user the type of data or signalsthat are being passed between the devices. Alternatively, in ameasurement, automation or simulation application, when the userconnects a tank icon representing a tank to, for example, a valve iconrepresenting a valve, the diagram may automatically draw the connectionwith the appearance of a pipe to visually indicate to the user the typeof signals, data or phenomena that is being transferred between thedevices.

[0202] In one embodiment, the configuration diagram is operable toperform type checking of connections between device icons. For example,if the user attempts to connect a PCI device to a USB device, the methodmay determine that the devices are incompatible and generate an errorindication, such as a broken connection. As another example, if the userattempts to connect a tank icon to a laser icon, the configurationdiagram may perform type checking and determine that the two deviceicons are incompatible types that cannot share the same physicalphenomena.

[0203] However, if the user is connecting a first device icon to asecond device icon to deploy a program or indicate program invocation,then type checking may not be performed, i.e., may be unnecessary.

[0204] Virtual Device Icons

[0205] As described above, the user may create a “virtual device icon”or “virtual program icon” that represents a non-present device orprogram, respectively. Virtual device icons and/or virtual program iconsmay also be automatically or programmatically created. For example,virtual device icons and/or virtual program icons may be automaticallycreated for devices or programs that are purchased by user, wherein thevirtual icons are displayed and used in the configuration diagram untilthe actual device or program is received and installed. For example,where the user purchases a device from a server computer 90, the server90 may provide a virtual device icon to be temporarily displayed in theuser's configuration diagram until the actual device is received andinstalled. In one embodiment, simulation code may be created or used tosimulate operation of the virtual device until the physical device isinstalled.

[0206] In one embodiment, from the user's perspective, programs can bedeployed to virtual devices (a program icon deployed to a virtual deviceicon) just as if the device was physically present. The program is notactually deployed or transferred to a virtual device until thecorresponding physical device is added to the distributed system. Whenthis occurs, the new device may be automatically detected, the newdevice may be correlated with the previously created virtual device, andprograms that have been previously “deployed” to the virtual device bythe user in the configuration diagram may now be physically or actuallydeployed to the real or physical device that has been installed. When aprogram is automatically deployed to a device icon, the configurationdiagram may be animated to visually indicate to the user the deploymentoperation that is occurring to the newly installed device. For example,when a program is automatically deployed from the main computer system82 to a first device, the corresponding program icon may be animated onthe configuration diagram to “flow” from the computer system device iconto the first device icon corresponding to the first device.

[0207] In a similar manner, a virtual program may be deployed to adevice just as if the program was actually installed. For example, avirtual program icon that represents a hardware configuration programmay be deployed to a device that includes a programmable hardwareelement. A virtual program icon may be used in the instance where theactual hardware configuration program is in the process of beingcompiled and is not yet ready for deployment. In one embodiment, theoperation of the hardware configuration program may be simulated bysoftware executing on the computer system until the hardwareconfiguration program has been compiled and deployed.

[0208] In another embodiment, where a user specifies a non-present or“virtual” device, or attempts to deploy a program to a non-present or“virtual” device, the method may optionally use another “present” deviceas a stand-in.

FIG. 9—Deploying a Program on a Device

[0209]FIG. 9 is a flowchart diagram illustrating operation ofgraphically deploying a program on a device. The method of FIG. 9 can beused to distribute an application among a plurality of devices in adistributed system, wherein the application comprises one or moreprograms. The method executes on a first computer system, such ascomputer system 82, which includes or is coupled to a display fordisplaying the configuration diagram. In one embodiment, theconfiguration diagram may be shown on client computer 82 and the methodmay execute on server computer 90, which displays the configurationdiagram on the client computer 92.

[0210] It presumed that the configuration diagram (or another window)displays one or more program icons, preferably a plurality of programicons, wherein each of the program icons corresponds to at least oneprogram in the application. The configuration diagram also displays oneor more device icons on the display, wherein each device iconcorresponds to a device in the system. Each device may be coupled to thefirst computer system 82 in some manner, or may be a virtual device asdescribed above.

[0211] In step 242 the user associates a first program icon of theplurality of program icons with a device icon in response to user input,wherein the first program icon corresponds to a first program in theapplication. The device icon represents a device in the system. Forexample, the device icon may correspond to a remote device in thedistributed system, i.e., a device other than the main computer system82. In the preferred embodiment, associating the first program icon withthe device icon in response to user input comprises “dragging anddropping” the first program icon on to the device icon. This maycomprise the user selecting a program icon on the display in theconfiguration diagram with a pointing device, such as a mouse, anddragging and dropping the program icon on to a device icon. The conceptof “dragging and dropping” icons is well known in the computer arts. Theuser may also associate the first program icon with the device iconusing speech recognition techniques. For example, the user might say“associate program A with device B” or “deploy program A on device B” tocause the association. Other types of user input to create theassociation are also contemplated.

[0212] The step of associating (e.g., dragging and dropping) the firstprogram icon with the device icon may include receiving further userinput (e.g., a modifier) in step 244 indicating a certain operation. Thetype of operation may include moving the program; copying the program;deploying the program for remote execution (steps 254 and 256); changingthe location of remote execution of a program from a first device to asecond device (FIG. 11) or creating a call or invocation to the program(FIG. 12) without moving the program. The step of associating may alsohave a default mode, e.g., that the first program is to be deployed onto the device for remote execution. Further user input may be providedby the user if a different operation than the default mode is desired.

[0213] This further user input may comprise the user pressing a key onthe keyboard during the drag and drop operation performed in step 242.For example, in one embodiment, when the user drags and drops the firstprogram icon on to the device icon without pressing a key on thekeyboard, the first program corresponding to the first program icon iscopied to the device, but is not deployed for remote execution. When theuser drags and drops the first program icon on to the device icon whilepressing a key on the keyboard (e.g., the ALT key), the first programcorresponding to the first program icon is copied to the device anddeployed for remote execution. In another embodiment, when the userassociates (e.g., drags and drops) the first program icon on to thedevice icon, a dialog box or menu appears which queries the user as tothe type of association the user desires. Speech recognition techniquesmay also be used.

[0214] In step 246 the method may convert the program type of the firstprogram to a different program type supported by the device, ifnecessary. In one embodiment, each program may have a program type, suchas executable, text-based source code (un-compiled), graphical program,hardware configuration file, etc. In one embodiment, the method (e.g.,the computer system 82) may operate to automatically convert programsbetween different device types to ensure that deployed programs workproperly on the devices to which they are deployed. The conversionmethod may involve: determining the first program type of the firstprogram; determining the one or more program types supported by thedevice; determining if the device is incompatible with the first programtype of the first program; and converting the first program to adifferent program type supported by the device if the device isincompatible with the first program type of the first program. Step 246is discussed in greater detail with respect to the flowchart of FIG. 9.The conversion method may also display an error if conversion is notpossible.

[0215] In step 248 the method may load or deploy the first program on tothe device in response to the association performed in step 242. Forexample, the method may transfer or load (e.g., move or copy) theprogram to the specified device for later (or immediate) execution. Thetype of load or deploy operation in step 248 may be performed based onthe input received in step 244. This transfer step may utilize any ofvarious standard bus protocols. Where the source and destination devicesare coupled to the Internet, the transfer may use TCP/IP. Where thesource device is the main computer system 82 and the destination deviceis a USB device coupled to the computer system 82, the transfer may useUSB communication (USB packets).

[0216] In one embodiment, the plurality of programs are configured toexecute according to a specified relationship. For example, theplurality of programs may be configured to execute according to aspecified execution hierarchy. In this embodiment, the first program maybe configured to call one or more other (e.g., lower level) programsaccording to the specified relationship or hierarchy. In this instance,the deploying step 248 comprises deploying the first program and the oneor more other (e.g., lower level) programs on to the device. In otherwords, the respective program selected by the user in step 242 may beloaded in step 248, and all programs beneath the respective program inthe hierarchy may be loaded as well.

[0217] In step 250 the method may display a new program icon proximateto the device icon after the associating step. The new program icon maybe displayed in response to the deploying performed in step 248. The newprogram icon is preferably a copy of, or has the appearance of the firstprogram icon proximate to, or connected to, the device icon. The newprogram icon (e.g., the copy of the first program icon) displayedproximate to, or connected to, the device icon visually indicates thatthe first program is deployed on the device. In another embodiment, themethod may modify the device icon after or in response to the deployingstep 248 or the associating step 242. The modified device icon visuallyindicates that the first program is deployed on the device.

[0218] In one embodiment as noted above, the plurality of programs maybe configured to execute according to a specified relationship (such asa specified execution hierarchy), and the first program may beconfigured to invoke one or more other (e.g., lower level) programsaccording to the specified relationship or hierarchy. In this instance,step 250 comprises displaying the first program icon corresponding tothe first program, as well as program icons corresponding to the one ormore other (e.g., lower level) programs, proximate to the device icon.

[0219] This is illustrated in FIGS. 15-17. For example, FIG. 15illustrates an exemplary configuration diagram including a hierarchy ofprogram icons 402 and 404A-D and a device icon 412. The hierarchy ofprogram icons comprises a main program icon 402 at the top level of theprogram hierarchy and four program icons (“sub-program icons) 404A-D atthe next level of the program hierarchy. When the user associates theprogram icon 402 with the device icon 412 (e.g., drags and drops theprogram icon 402 on to the device icon 412), as shown by the “dottedline” icon in FIG. 16, the resulting configuration diagram appears asshown in FIG. 17. As shown in FIG. 17, the program icon 402, as well asthe lower level program icons 404A-D are copied proximate to (e.g.,under) the device icon labeled “Shah” 412. This visually indicates thatthe entire program hierarchy has been deployed on or copied to thedevice represented by the device icon 412. In another embodiment, theuser can configure the deployment where only the selected program istransferred, and any lower level programs are not transferred.

[0220] In step 252 the method determines if the action being performedis a remote invocation. If the action being performed is simply a copystep, then operation completes, the copy having been performed in step248.

[0221] If the action being performed is a remote invocation asdetermined in step 252, then in step 254 the method may modify theapplication to invoke the first program on the remote device. This maycomprise modifying at least one program in the application to invoke thefirst program on the device. Thus, during execution of the application,the application is operable to invoke the first program on the device,wherein the first program executes on the device. Where the plurality ofprograms are configured to execute according to a specifiedrelationship, and where the first program (e.g., callee program) isinvoked by a second program (e.g., caller program) according to thespecified relationship, step 254 may comprise modifying the secondprogram in the application to invoke the first program on the device. Ifthe action being performed involves associating a program icon from asource device to a destination device to configure remote invocation ofthe program on the destination device from the source device, then atleast one remaining program on the source device (which may be referredto as the caller program) may be modified to invoke the program on thedestination device.

[0222] In step 256 the method may comprise displaying a new icon (e.g.,a modified version of an existing icon) on the display in theconfiguration diagram to represent the invocation being performed. Thisnew icon may visually indicate that the first program is deployed on thedevice and will be executing on the device. In other words, this newicon may visually indicate that the application invokes the firstprogram on the device. For example, the new icon may be displayed inplace of the first program icon. In one embodiment, the new icon is amodified version of the first program icon which visually indicate thatthe first program is deployed on the device and will be executing on thedevice. For example, the modified version of the first program icon maycomprise modifying the first program icon to include the appearance ofthe device icon.

[0223] For example, as noted above, FIG. 15 illustrates an exemplaryconfiguration diagram including a hierarchy of program icons 402 and 404a-d and a device icon 412. The hierarchy of program icons comprises amain program icon 402 at the top level of the program hierarchy and fourprogram icons (“sub-program icons) 404 a-d at the next level of theprogram hierarchy. When the user associates the program icon 404 d withthe device icon 412 (e.g., drags and drops the program icon 404 d on tothe device icon 412), as shown in FIG. 16, for the purpose of deployingthe program remotely, the resulting configuration diagram appears asshown in FIG. 18. As shown in FIG. 18, the program icon 404 d is copiedunder the device icon labeled “Shah” 412. Also the appearance of theoriginal program icon 404 d is changed to include the appearance of thedevice icon 412 resulting in new icon 404d1. This visually indicatesthat the program 404 d in the program hierarchy is deployed on thedevice represented by the device icon 412 and will be executing on thedevice.

[0224] After programs have been deployed to the various devices asdesired, the application may be executed, as described with respect toFIG. 13b During execution, a portion of the application may execute onthe main computer system 82, or another device, and the application mayinvoke various programs on various devices in the distributed system.For example, the application on the main computer system 82 executionmay invoke a first program that has been deployed on a remote device.The first program may execute on the device and then either invoke otherdevices or return control to the application on the main computer system82.

FIG. 10—Converting a Program to a Different Program Type

[0225]FIG. 10 is a flowchart diagram illustrating more detail regardingstep 246 of FIG. 9. FIG. 10 illustrates more detail regarding examiningthe program type of a program being deployed and ensuring that theprogram type is compatible with the device to which it is beingdeployed. As described above, the method of FIG. 10 is performed when auser deploys a program on a device, e.g., when the user drags and dropsa program icon on to a respective device icon. The method of FIG. 10 mayalso be performed in response to other operations preferred by the user,such as an automatic deployment of a program.

[0226] As noted above, the program icon may represent any of varioustypes of programs (“program types”) such as executable (compiled)programs, source code (uncompiled) programs of various types, graphicalprograms, hardware configuration programs (hardware descriptions), etc.The target device represented by the device icon may be any of variousdevice types, e.g., may include a processor and memory or may include aprogrammable hardware element.

[0227] In one embodiment, the main computer system 82, which may bedifferent from the source device which currently stores the program andthe destination device to which the program is being deployed, may storeconversion software which examines both the type of the program beingdeployed and the type of device icon to which the software program isbeing deployed. The main computer system 82 may execute this conversionsoftware to automatically convert programs to different types on an asneeded basis, thereby ensuring that the destination device is able toreceive a program having a type that is executable or useable by thedestination device. In another embodiment, one or both of the sourcedevice and the destination (or target) device may include conversionsoftware for converting programs between various types.

[0228] In step 260 the method examines the type of software programbeing deployed, i.e., whether the software program is an executableprogram, uncompiled program, graphical program, software object, etc.The method may also determine more specific information regarding theprogram type. For example, if the software program is an uncompiledprogram, the method may determine the type of source code, e.g., C, C++,Java, etc., to determine the appropriate compiler, if necessary. If thesoftware program is a graphical program, the method may determinewhether the software program is a LabVIEW VI, a Simulink diagram, a VEEdiagram etc. The method may also determine different types of hardwareconfiguration programs or files (hardware descriptions).

[0229] In step 262 the method examines the type of device (“devicetype”) to which the software program is being deployed, i.e., the typeof device represented by the device icon with which the program icon wasassociated. The various types of devices may include devices whichinclude a CPU with memory, a programmable hardware element, such as anFPGA, and/or may include respective types of execution engines orcompilers for different software types.

[0230] If the program icon has been associated (dragged and dropped)with or deployed to another program, i.e., (the destination programicon) the method may examine the destination program icon in step 262.This may be necessary to ensure that the destination programcorresponding to the destination program icon can interoperate with theprogram being deployed. The method may also examine the destinationdevice which includes the destination program.

[0231] In step 264 the method determines whether the device iscompatible with the respective program. For example, if the deviceincludes a CPU and memory and an appropriate operating system and/orexecution software, and the software program is a conventionalexecutable which can be executed by the software currently present onthe device, then the device is determined to be compatible with theprogram. However, as another example, if the program is a softwareprogram such as a compiled executable or source code, and the devicecontains only a programmable hardware element such as an FPGA, then thesoftware program would be determined to be incompatible with the device.As another example, if the program is a graphical program such as aLabVIEW graphical program developed in the LabVIEW program developmentenvironment, and the device is a computer system which does not includethe LabVIEW execution environment or LabVIEW run time system, then thesoftware program would be determined to be incompatible with the device.

[0232] If the device is determined to be compatible with the program instep 264, then in step 248 the program is loaded into the memory of thedevice or configured on to the device for later execution. Thus, if theprogram is a software program and the device includes a processor andmemory medium, the software program can be loaded into the memory mediumof the device for later execution. As another example, if the program isa hardware configuration program or file for configuring a programmablehardware element such as an FPGA, and the device is, for example, asmart sensor which includes an FPGA, loading the program on to thedevice may comprise configuring the FPGA of the device with the hardwareconfiguration program. Step 248 was discussed above with respect to theflowchart of FIG. 8.

[0233] If the device is determined to be incompatible with the programin step 264, then in step 266 the program may be converted into theappropriate format for the device, if possible. As one example, if theprogram is a software program such as an executable (compiled) program,a graphical program, a source code program, etc., and the deviceincludes a programmable hardware element such as an FPGA, the softwareprogram may be programmatically converted into a hardware configurationprogram in step 266. As another example, if a program is a particulartype of program which requires a particular execution engine, such as aLabVIEW graphical program or VI which requires a LabVIEW executionengine, and the destination device does not include the LabVIEWexecution engine, then the LabVIEW graphical program may be convertedinto a text based programming language, e.g., a C program, and thencompiled into executable format in step 266. As yet another example, ifthe program is a hardware configuration program intended for an FPGA orother programmable hardware element, and the device to which the programis being deployed comprises a CPU and memory and does not include aprogrammable hardware element, then the hardware configuration programmay be converted into a software program for execution by the device instep 266. As another example, if the program is currently in a sourcecode format, an appropriate compiler may be selected based on the typeof target device, or the type of software present on the target device.

[0234] In step 248 the converted program is loaded on to the device. Forexample, where the main computer system 82 is the source device, themain computer 82 may execute the conversion program to convert theprogram to the appropriate program type, and transfer the convertedprogram to the destination device. If the main computer system 82 is notthe source device, the program may first be transferred to the maincomputer system 82 for conversion, followed by transferring theconverted program to the destination device.

[0235] It is noted that the operation of converting the program into theappropriate format for the device in step 232 and then loading theconverted program on to the device in step 234 may occur invisibly tothe user. In other words, the user may simply drag and drop the programicon on to the device icon in step 242 and enter other information instep 244. Steps 246, 248, 250, 252, 254 and 256 of FIG. 8 (and the stepsof FIG. 9) may be performed invisibly to the user. Thus, the user maynever know that the program corresponding to the program icon that theuser dragged and dropped on to the device icon was initiallyincompatible with the device, the conversion of the program to theappropriate format in step 246 having been performed invisibly to theuser.

[0236] In another embodiment, if the device is determined to beincompatible with the program in step 264, a dialog may appear alertingthe user as to this incompatibility and asking if the user desires forthe conversion to occur. In some instances there may be a plurality ofappropriate formats or program types for the device. In this instance,the dialog box may request the user to select which format or programtype in to which to convert the program in step 266. Alternatively, theuser may choose to not complete the deployment due to theincompatibility.

[0237] In another embodiment, instead of converting the program to theappropriate type, the method may transfer software, such as an executionengine, to the device to enable the device to execute the program. Forexample, if the program is a graphical program such as a LabVIEWgraphical program developed in LabVIEW, and the device does not includethe LabVIEW execution environment or LabVIEW runtime system, then thecomputer system 82 may transfer the LabVIEW execution engine, e.g.,LabVIEW or LabVIEW RT, to the device.

FIG. 11—Association of a Program Icon From a Source Device to aDestination Device

[0238]FIG. 11 is a generalized flowchart diagram illustratingassociation of a program icon from a first or source device to a secondor destination device. Stated another way, FIG. 11 illustrates where aprogram icon corresponding to a first or source device icon may beassociated with a second or destination device icon, or a program iconof the destination device icon. The flowchart of FIG. 10 describesoperation where the source device icon may be the main computer system82 or a remote device coupled to the main computer system 82. In asimilar manner, the destination device or second device may be the maincomputer system 82 or a remote device coupled to the main computersystem.

[0239] The flowchart of FIG. 11 is similar to the flowchart of FIG. 9.However, the flowchart of FIG. 11 further includes case 4 describedabove, which involves transferring remote execution of a program from afirst device to a second device, wherein in each case the program isbeing remotely invoked by a third device.

[0240] As shown, in step 242 the user may associate a program icon froma first source device to a second destination device. As described abovewith respect to step 242, this may be performed using iconic drag anddrop techniques.

[0241] In step 244 the user may specify the type of operation. Asdescribed above, this may comprise pressing a selected key on thekeyboard during the drag and drop operation, using a dialog box beforeor after the drag and drop operation, or using speech recognitiontechniques.

[0242] In step 246 the method may convert the program type of the sourceor first program to a different program type supported by thedestination device. As described above with respect to 246 of FIG. 9,where the source and destination devices are both remote devices, thismay involve the main computer system 82 detecting that a conversion isneeded, reading the respective program from the source device,performing the conversion to the new program type, and then sending theconverted program to the destination device in step 248. In anotherembodiment, various devices in the distributed system may include thecapability of performing this program type conversion as desired.

[0243] In step 248 the program may be deployed on the destinationdevice. This may be performed by the source device directly sending theprogram or the converted program to the destination device.Alternatively, the program may be routed through the main computersystem 82, e.g., may be transferred from the source device to the maincomputer system 82 and then to the destination device.

[0244] In step 250 a new program icon may be displayed proximate to thedestination device icon in the configuration diagram to indicate thatthis program has been transferred or copied to the destination device.

[0245] Upon completion of step 250, various different operations may beperformed depending on the type of operation selected by the user. Asshown, if the user has indicated a desire to simply copy the programfrom the source device to the destination device then operationcompletes, the copy operation having been performed in step 248.

[0246] If the user has indicated in step 244 that a remote invocationfrom the first remote device to the second remote device is desired,then in step 254 the method modifies the caller program on the sourcedevice to invoke the callee program (the program that was transferred instep 248) on the destination device. In step 256 the caller program iconis modified on the source device or first device to initially indicatethat the program is being invoked on the second or destination device.This operation is similar or identical to operation in steps 254 and 256of FIG. 9.

[0247] The user may also indicate in step 244 that the user desiresremote invocation of this program from a third device (e.g., the maincomputer system 82) to this program on the second or destination device.In other words, the user may have previously deployed this program onthe source device, and may later decide to instead have the remoteexecution of this program occur on a different device, i.e., thedestination device instead of the source device. Thus, instead of theuser having to move the program icon corresponding to this program backto the main computer system device icon and then to the new destinationdevice where remote execution is desired, the user can simply drag anddrop the program icon for this program from the first or source remotedevice to the second or destination remote device and indicate that theuser desires this program to be called from the main computer system 82and execute on this second destination device. In this instance, in step253 the computer system 82 may determine if it is able to invoke theprogram from the destination device. If so, then in step 254A thecomputer system 82 modifies the application, e.g., one of the programson the application contained on the computer system 82, to invoke theprogram on the second destination device. In step 256A the originalprogram icon, i.e., the caller program icon proximate to the computersystem device icon is modified to visually indicate that the program isnow being invoked on the second or destination remote device and is nolonger being invoked on the first or source remote device.

[0248] As noted above, the user may also associate (e.g., drag and drop)a program icon from a first device icon to a second device icon andindicate that the user desires for a program or application on thesecond device icon to invoke the program corresponding to the programicon being associated on the first icon. In this situation, as shown inFIG. 12, in step 292 a program or application on the second device,e.g., one or more programs in the second device, may be modified toinvoke the program that is stored on the first device. In step 294 themethod may modify the original program icon on the second device tovisually indicate that the program is being invoked on the first device.FIG. 12 is described further below.

FIG. 12—Association of a Program Icon From a Remote Device to the MainComputer System

[0249]FIG. 12 is a flowchart diagram illustrating association of aprogram icon from a remote device to the device icon for the maincomputer system 82. It is noted that the flowchart of FIG. 12 can alsoapply readily to associating a program icon from a first remote deviceto the device icon of a second remote device.

[0250] In one embodiment, the user can select program icons comprised ona device that is not the main device 82 and associate these programicons with the main device 82 using the drag and drop techniquesdescribed above. The user can select various operations to be performed,as described below. For example, in step 282 the user can select aprogram residing on a remote device and drag and drop the correspondingprogram icon on to the device icon of the main device 82.

[0251] In step 284 the user can select among various options, e.g.,either to 1) move or 2) copy the program to the main computer system 82,3) to deploy the program in the main computer system; 4) to transferexecution from a first device to a second device; or 5) to cause remoteexecution of this program by the programs on the main computer system82. This selection may be performed by providing certain user input,such as holding down a certain key during the drag and drop operation,or through a dialog box, or using speech recognition. Here it ispresumed that the user selects option 5. Options 1, 2 and 3 weredescribed above in FIG. 9 and options 1, 2, 3 and 4 were described abovein FIG. 11.

[0252] If the user selects the option to cause remote execution of thisprogram by the application on the main computer system 82 as determinedin step 286, then steps 292 and 294 are performed. In step 292 theapplication, e.g., one or more programs in the application, may bemodified to invoke the program that is stored on the remote device. Instep 294 the method may modify the original program icon in theapplication to visually indicate that the program is being invoked onthe remote device.

[0253] Thus, in this instance, the program on the remote device is notactually copied to the main device, rather dragging and dropping theprogram on the remote device to the main device icon causes the maindevice icon to include a call to this program on the remote device.Thus, when the main program on the main device executes, a call is madeto this program on the remote device to invoke execution of this programon the remote device during execution of the main application program.

[0254] In step 282 the user can drag the program from the remote deviceto a particular program icon in the hierarchy of program icons displayedon the main device. Thus the user can select which program in thehierarchy of the main device 82 will call this program on the remotedevice. If the user drags a first program icon from the remote device onto a second program icon residing on the main device 82 in this fashion,then in the embodiment of FIG. 12, the second program is configured toplace a call to the first program. Thus, after the second program(corresponding to the second program icon) in the main device 82executes, it places a call to the first program (corresponding to thefirst program icon) on the remote device to invoke execution of thisfirst program on the remote device. If the user desires to specify withfiner granularity where in a respective second program on the maindevice this call should be made, the user may open up the source code ofthe second program and specify the exact location. For example, if theprogram is a graphical program, such as a LabVIEW VI, the user may openthe block diagram of the second program (e.g., by right clicking on theprogram icon in the configuration diagram and selecting this option) andthen further select a particular node where this call is to be made. Inone embodiment, the user may drag and drop the program icon from theremote device on to a particular location (e.g., on to a node or wire)in the diagram to select where this call is to be made. In oneembodiment, when the user drags a program from a remote device to aprogram icon on the main device, and where the program on the maindevice is a graphical program, the graphical program block diagramautomatically appears on the display, allowing the user to easilynavigate and place the call to the program in the calling program.

FIG. 13A—Possible Operations with Program Icons

[0255] As described above, the system displays the configuration diagramwith an iconic view, preferably an iconic relationship view (e.g.,hierarchy view), of the distributed software programs. The user canselect various options associated with device icons and/or programicons. FIG. 20A illustrates an exemplary screen shot showing a userselecting options (e.g., by right clicking on the icon) from a menuassociated with a program icon. The follow are representative examplesof operations that may be performed with respect to a program icon.

[0256] In step 360 the configuration diagram is displayed with an iconicrelationship view of the distributed programs.

[0257] In step 362 the user can select a program icon associated with adevice icon, e.g., by right clicking on the respective program icon.Alternatively, the user may select a device icon, e.g., by rightclicking on the device icon and then selecting a run option for thedevice icon.

[0258] In step 364 the user can then select a “run” option to beginexecution of the program that has been deployed on to the device. If theuser has selected a device icon, the user can select a run option forthe device icon. This operates to begin execution of the top levelprogram, or all of the programs, that have currently been deployed onthe device. This Run option is shown in FIG. 18.

[0259] In step 368 the user may select an “Open Front Panel” option toview the front panel or user interface of the program deployed on orexecuting on the device. If the program is not currently executing,selection of this option will cause the user interface panel(s) or frontpanel to be displayed for the program. If the program is currentlyexecuting on the device, and the user selects this option to view theuser interface panel, the user interface panel may appear wherein theuser interface panel may show one or more of the inputs and/or outputsof the program being executed. Where the program is executing on aremote device, i.e., a device separate from the computer system, thepanel or user interface information may be transferred to the maincomputer system 82 for display. The data being received by or generatedby the program may be transferred over a bus or network to the maincomputer system 82 where the user interface panel is displayed, and thedata may appear in the user interface panel much like the programsexecuting directly on the main machine. In one embodiment, the user mayalso be able to interactively manipulate input provided to the programusing the user interface panel on the main program, wherein this userinput is received by the main computer system and transferred to thedevice where the program is actually executing. Output produced by theprogram in response to this input may then be transferred back to themain computer system 82 and displayed on the user interface panel thatis being displayed on the display of the main computer system 82. The“Open Front Panel” option is shown in FIG. 20A.

[0260] As shown in step 372, the user may also select an option to causethe program represented by the program icon to halt execution. This mayalso cause all programs below this program in the hierarchy to also haltexecution. Alternatively, the user may select an option for a deviceicon to select a stop or halt menu item, which causes all programsexecuting on the respective device to stop execution.

[0261] In one embodiment, the may also select an option to cause thesource code of the program to be displayed. For example, if the programis a graphical program, then user selection of this option may cause theblock diagram of the graphical program to be displayed. If the programis a text based program, such as a C-language program, then userselection of this option may cause the textual source code of theprogram to be displayed. The user may also select various debuggingfeatures to executing on the program.

[0262] Various other operations are possible. For example, FIG. 20Aillustrates a menu which includes options such as “HighlightConnections”, “Hide All Sub-VIs”, “Show VI Hierachy”, “Show AllSub-VIs”, “Show All Callers”, “Find All Instances”, “Edit Icon”, VIProperties”, “Open Front Panel” (see step 368), “Print Documentation”,“Run” (see step 362), “CloseVI”, and “Remote Call”.

[0263] Selection of the “Remote Call” feature is shown in FIG. 20B. Asshown, selection of the “Remote Call” feature may cause the names ofother program icons or device icons to be displayed in a menu. The usermay then select the name of an icon to configure a remote call orinvocation. A new link may then be displayed in the configurationdiagram to visually indicate this remote call. Alternatively, when theuser selects the “Remote Call” feature, program icons or device iconsthemselves may be highlighted in the diagram. The user may then selectfrom among these icons to configure the remote call.

[0264] In one embodiment, if the user drags and drops a first deviceicon on to a second device icon, this causes all programs stored on thefirst device icon to be copied to or deployed to the second device icon.

[0265] In one embodiment, the configuration diagram may support anapplication icon or project icon, wherein the application icon orproject icon represents one or more programs and possibly otherinformation. For example, the application icon or project icon may alsoinclude or represent information that specifies how the variousprograms, help files, etc. are to be distributed among the variousdevices in a system. The configuration diagram may also support a systemicon, wherein the system icon represents a distributed system comprisinga plurality of devices (wherein each device may have its own deviceicon).

[0266] The user may associate (e.g., drag and drop) the configurationicon or project icon on to a system icon, wherein this causes thevarious programs to be distributed or deployed among the devices in thesystem represented by the system icon. Information represented by theapplication icon may be used in deploying the programs to the variousdevices.

FIG. 13B

[0267]FIG. 13B illustrates execution of an application. As shown, theuser can select the top level program icon in the relationship orhierarchy and begin execution of the top level program, e.g., by rightclicking on the top level program icon and selecting a “run” feature.Alternatively, the user can select the device icon and select a “run”feature, which causes the top level program to begin execution.

[0268] During execution, a portion of the application may execute on themain computer system 82 in step 382, and the application may invokevarious programs on various devices in the distributed system in step384. For example, the application on the main computer system 82execution may invoke a first program that has been deployed on a remotedevice. The first program may execute on the device and then eitherinvoke other devices or return control to the application on the maincomputer system 82. In another embodiment, the main computer system 82may be used for configuration only, and the application may execute onvarious other devices.

[0269] Where two or more of the programs are configured for concurrentor parallel execution, such as on different devices, selecting the “run”option for the top level program icon and/or the device icon may causethese two or more programs to begin concurrent or parallel execution.

[0270] Installing New Programs

[0271] When a user installs a new program on the main computer system 82or on another device in the distributed system, the new program may beautomatically detected, e.g., by the main computer system 82, and a newprogram icon may be automatically displayed on the configuration diagramdisplayed on the main computer system 82 corresponding to the newprogram. The new program icon may be automatically displayed on theconfiguration diagram proximate to, and/or connected to, the device onwhich the program has been installed. For example, if the new program isinstalled on the first computer system, a new program icon may appearproximate to, and/or connected to, the first computer system device iconon the configuration diagram.

[0272] Example Configuration Dialog for Assembling a ConfigurationDiagram

[0273]FIG. 14 illustrates one embodiment of a configuration dialog forcreating or specifying a configuration diagram. FIG. 14 illustrates aconfiguration dialog or user interface panel which is used for detectingor discovering devices connected within the system. As noted above, thecomputer system 82 may act as the central console of the distributedsystem, and may operate to execute software which displays theconfiguration diagram, as well as the configuration dialog used inconfiguring the configuration diagram.

[0274] The computer system 82 preferably has the ability to discoverdevices, e.g., other computers, smart sensors, FPGA devices, or othertypes of nodes or devices that are comprised and are coupled to thecomputer, e.g., coupled to the computer through a network. The systempreferably discovers or detects devices and adds them to theconfiguration diagram. In one embodiment, one or more of the variousdevices may have the capability to report their presence and device typeto the main computer system 82. For example, various smart sensors maypublish their presence and device type to the main computer system 82.

[0275] In one embodiment, the system also has the ability to createvirtual devices in cases where the actual device is not presentlyavailable, but the device will be present when the system executes theapplication being created. Thus, the user can create a virtual devicefor devices that are not actually present during design time. In oneembodiment, a physical device may be used as a “stand in” device for avirtual device, wherein the program desired to be deployed to thevirtual device instead is deployed to or executes on the “stand in”device until a physical device is installed in the system thatcorresponds to the virtual device. In another embodiment, a softwareprogram may be used to simulate operation of a virtual device, i.e., aphysical device that is not present.

[0276] In one embodiment, as devices or nodes of interest are added tothe user interface panel in FIG. 14, they appear as devices icons orcomputing element icons in the configuration diagram. Thus, when themain computer system 82 is started, devices which are automaticallydetected may immediately and automatically appear as device icons in theconfiguration diagram. As the user later inputs the presence of otherdevices to the configuration dialog, corresponding device icons may alsoautomatically appear in the configuration diagram. When the user orother party couples a new device to the distributed system, the newdevice may be automatically detected, and a new device iconcorresponding to the new device may be automatically displayed on theconfiguration diagram.

[0277] In another embodiment, more advanced wizards may be used tocreate the configuration diagram. In one embodiment, a configurationwizard may execute on a server 90, or on the user's system 82, where theserver 90 also stores a plurality of different programs. Theconfiguration wizard may ask the user a series of questions regardingdesired operation of the system, the hardware devices the user's systemcontains, etc. The configuration wizard may then automatically create aconfiguration diagram for the user and display this configurationdiagram on the user's display. The configuration wizard may alsotransfer the corresponding configuration data to the user's computer 82.This configuration data may be executable to automatically deployprograms on various of the user's hardware devices. Alternatively, theserver 90 may automatically deploy programs on various of the user'shardware devices over a network.

[0278] In one embodiment, the configuration diagram may support a findor discovery tool. The find tool may support various filters that theuser can configure with logical expressions in order to locate variousdevices, programs, I/O channels, data points, etc. For example, the usercan enter the following “find” expressions:

[0279] Find Only FP2000 or Devices with AI

[0280] Find device that has a tag named . . .

[0281] IP starts with 130.164.*

[0282] Add all RT devices on my subnet. Etc

[0283] Find devices on building No 2

[0284] Do not show nodes on Building 1

FIG. 15—Deploying Programs and Changing Invocation Relationships

[0285] FIGS. 15-19 illustrate embodiments of how programs may bedeployed using a configuration diagram. FIG. 32 illustrates an exampleof deployment of a program to a target device.

[0286]FIG. 15 illustrates a configuration diagram (labeled “hierarchywindow”) which includes a main program icon 412 and four sub-programicons 404A-404D. In this example, the user has added a computer systemon the network into the configuration panel of FIG. 14 wherein the nameof this computer system is “Shah”. Thus, the configuration diagramappears as shown in FIG. 15 with a device icon 412 representing thecomputer system labeled “Shah”.

[0287] As shown in FIG. 16, when the user desires to distribute anapplication among various devices, e.g., to deploy a program on to adevice, the user can select a program icon with a pointing device, anddrag and drop the icon on to a device icon. As shown in FIG. 16, theuser has selected the main program icon 402 and has dragged and droppedthis icon 402 on to the device icon 412. This is represented by the boxoutlined with dashed lines shown in FIG. 16.

[0288] When this operation is completed the main software programcorresponding to the program icon 402 and all of the sub-programs withinthe hierarchy are copied to the destination device. Also, the programicon 402 and all of the sub-program icons 404A-D are copied to appearproximate to (e.g., under) the device icon 412. The configurationdiagram then appears as shown in FIG. 17. Thus, the same applicationhierarchy of program icons 402 and 404A, 404B, 404C and 404D appearbelow the device icon 412, indicating that these programs are nowdeployed on the device represented by device icon 412.

[0289] As described above, in one embodiment when the user drags aprogram icon from the hierarchy of program icons on to a device icon,this may operate to copy the underlying program corresponding to theprogram icon on to the respective device. Thus, for example, theconfiguration window may display a hierarchy of program icons that areresident on the main computer system. If the user selects the top levelprogram from this hierarchy and drags this top level program on to adevice icon corresponding to a different device in the system, thiscauses the various programs corresponding to the main program and allprograms below this main program in the hierarchy to be copied to therespective device. If the user selects a sub-program in the hierarchyresident on the main computer system and copies this over to a device,this causes the sub-program and all sub-programs below this sub-programin the hierarchy to be copied over to the device. Thus, when the userdrags a program icon to a respective device, this causes the programcorresponding to that program icon and all programs below that programicon in the hierarchy to be copied to the respective device.

[0290] In one embodiment, the user may desire to distribute parts of anapplication to different devices in the distributed system fordistributed execution, which also effectively changes the operation ofthe programs contained on the original or source device (e.g., the maincomputer system) that are being executed. For example, assume the userdesires to deploy a sub-program of a main program on to a differentdevice for execution. In one embodiment, the user simply drags theprogram icon corresponding to the sub-program from the main programhierarchy on to the device icon and may further indicate a “deploymentfor remote execution” (such as by holding down the ALT key during thedrag and drop operation). This causes the sub-program to be transferredto the device. This also causes the main program to be automaticallymodified to include a call of the sub-program to the target device towhich the program was deployed. Thus, the high level program in thehierarchy is automatically modified to include a call to the device tocall or invoke execution of this program on the remote or target device.The corresponding configuration window would appear as shown in FIG. 18,wherein the top level program in the program hierarchy has threesub-program icons 404A-404C which are resident on the main machine 82,and an icon 404D1 corresponding to the remote device in the hierarchyindicates that a call is being made to a remote device during execution.

[0291] One example of this operation is as follows. Presume anapplication is measuring the temperature of a tank and is performingcalculations and control as well as logging data values to anon-volatile memory or disk. If the temperature sensor used in theapplication is connected to a different computer system or a differentdevice (device B), then the user may desire to run the program thatmeasures the temperature on that separate or remote device (device B).The user can accomplish this result without requiring manualmodification of the application. The user can simply drag thetemperature program to the different device or machine (device B). Inone embodiment, the user presses the ALT key while dragging and droppingthe sub-program icon on to the remote device. This causes thetemperature program to be downloaded to device B. The top levelapplication, i.e., the program immediately above this program in theprogram hierarchy, is preferably automatically modified to make a callto this temperature program, which is now located on device B. Also, theconfiguration diagram would appear as shown in FIG. 18. Here, the toplevel application is calling the temperature program on the machinereferred to as “SHAH”. It is noted that the user can easily change wherethis remote call is made simply by dragging the program to anotherdevice or by using a pop-up menu.

[0292] In one embodiment, the user may also change the invocationrelationship between two (or more) programs by selecting a link or linkicon between two programs and manipulating or changing one or both endsof the link to connect one or more different programs. The user can alsodraw links between program icons to configure an invocation relationshipbetween the respective programs.

[0293] For example, FIG. 17 illustrates a program relationship view ofvarious programs. The program relationship view shows the invocationrelationship or caller/callee relationship between the programs. If theuser no longer desires the program represented by program icon program402 a to invoke or call the program represented by program icon 404d2,the user can select the link icon 405 and graphically reconfigure thelink icon to be drawn between program icon 404 a and program icon 404d2.For example, the user may select the end of the link proximate to theprogram icon 402 a and drag this end of the link with a pointing deviceover to the other program icon 404 a, creating a new link 405 a. Afterthis operation, the configuration diagram would appear as shown in FIG.19A. As shown, program icon 404 a is now connected by link icon 405 a toprogram icon 404d2, and link icon 405 between program icons 402 a and404d2 is no longer displayed. This indicates that the programrepresented by program icon 404 a is configured to call the programrepresented by program icon 404d2, instead of the program represented byprogram icon 402 a being configured to call the program represented byprogram icon 404d2.

[0294] If the user had desired both programs represented by programicons 402 a and 404 a to call program 404d2, the user could simply drawa new link between program icon 404 a and program icon 404d2. Theresulting diagram would then appear as shown in FIG. 19B. As shown inFIG. 19B, links are displayed between program icons 402 a and 404d2 aswell as between program icons 404 a and 404d2.

[0295] Use of the Configuration Diagram with Graphical Programs

[0296] Where a program icon on the configuration diagram corresponds toa graphical program, the user may perform various additional operations.Since the graphical program is itself an iconic program, the user isable to graphically specify particular locations in the graphicalprogram or invocation to occur. For example, if the user desires tochoose a specific location in the graphical program to have a call madeto a remote device, this may be performed graphically within thegraphical program. In other words, if the user desires to choose aparticular function node in the graphical program to make a call orinvoke a program on a remote device (e.g., different computer), or ifthe user desires to have one or more nodes or sub-programs in thegraphical program execute on a remote device, this may be easilyperformed using the block diagram of the graphical program. The user mayfurther incorporate device icons or program icons directly into agraphical program using the graphical association techniques describedherein.

[0297] Creation of a Graphical Program

[0298] A graphical program may be created on the computer system 82 (oron a different computer system). The graphical program may be created orassembled by the user arranging on a display a plurality of nodes oricons and then interconnecting the nodes to create the graphicalprogram. In response to the user assembling the graphical program, datastructures may be created and stored which represent the graphicalprogram. The nodes may be interconnected in one or more of a data flow,control flow, or execution flow format. The graphical program may thuscomprise a plurality of interconnected nodes or icons which visuallyindicate the functionality of the program. As noted above, the graphicalprogram may comprise a block diagram and may also include a userinterface portion or front panel portion. Where the graphical programincludes a user interface portion, the user may assemble the userinterface on the display. As one example, the user may use the LabVIEWgraphical programming development environment to create the graphicalprogram.

[0299] In an alternate embodiment, the graphical program may be createdby the user creating or specifying a prototype, followed by automatic orprogrammatic creation of the graphical program from the prototype. Thisfunctionality is described in U.S. patent application Ser. No.09/595,003 titled “System and Method for Automatically Generating aGraphical Program to Implement a Prototype” and U.S. patent applicationSer. No. 09/587,682 titled “System and Method for AutomaticallyGenerating a Graphical Program to Perform an Image ProcessingAlgorithm”, which are both hereby incorporated by reference in theirentirety as though fully and completely set forth herein. The graphicalprogram may be created in other manners, either by the user orprogrammatically, as desired. The graphical program may implement ameasurement function that is desired to be performed by an instrument ormeasurement device. The graphical program may also implement anautomation function (including process control), a simulation function,a network management function, or any other type of function, asdesired.

FIG. 22—Creating the Graphical Program

[0300]FIG. 22 is a flowchart diagram illustrating one embodiment of amethod for creating a graphical program operable to receive and respondto user interface events. It is noted that steps in the followingflowcharts may occur concurrently or in different orders than thatshown.

[0301] In step 602, a graphical user interface or front panel for thegraphical program may be created, e.g., in response to user input. Thegraphical user interface may be created in any of various ways, e.g.,depending on the graphical programming development environment used.

[0302] In step 604, a block diagram for the graphical program may becreated. The block diagram may be created in or using any graphicalprogramming development environment, such as LabVIEW, Simulink, VEE, oranother graphical programming development environment. The block diagrammay be created in response to direct user input, e.g., the user maycreate the block diagram by placing or “dragging and dropping” icons ornodes on the display and interconnecting the nodes in a desired fashion.Alternatively, the block diagram may be programmatically created from aprogram specification. The plurality of nodes in the block diagram maybe interconnected to visually indicate functionality of the graphicalprogram. The block diagram may have one or more of data flow, controlflow, and/or execution flow representations. The block diagram may haveone or more nodes which represent sub-graphical programs (e.g.,sub-VIs), and thus may be hierarchical. An exemplary block diagram isshown in FIGS. 24 and 24B.

[0303] It is noted that the graphical user interface and the blockdiagram may be created separately or together, in various orders, or inan interleaved manner. In one embodiment, the user interface elements inthe graphical user interface or front panel may be specified or created,and terminals corresponding to the user interface elements may appear inthe block diagram in response. For example, when the user places userinterface elements in the graphical user interface or front panel,corresponding terminals may appear in the block diagram as nodes thatmay be connected to other nodes in the block diagram, e.g., to provideinput to and/or display output from other nodes in the block diagram. Inanother embodiment, the user interface elements may be created inresponse to the block diagram. For example, the user may create theblock diagram, wherein the block diagram includes terminal icons ornodes that indicate respective user interface elements. The graphicaluser interface or front panel may then be automatically (or manually)created based on the terminal icons or nodes in the block diagram. Asanother example, the graphical user interface elements may be comprisedin the diagram.

[0304] In step 606, the graphical program may be stored on or deployedto a device, and in step 608 a corresponding graphical program icon mayappear in the configuration diagram

[0305] The graphical program may then be deployed to various otherdevice using the graphical deployment techniques described herein, ormay be executed as described herein. The graphical program may beexecuted on any of the various devices present in the distributedsystem.

FIG. 23—Configuring A Graphical Program Node For Remote Execution

[0306]FIG. 23 is a flowchart diagram illustrating one embodiment ofoperation of configuring a graphical program node for remote execution.The method of FIG. 23 may be used for deploying nodes of a graphicalprogram to various different devices for remote execution.

[0307] As shown, where the program is a graphical program, such as aLabVIEW VI, the user can display the main block diagram of the graphicalprogram (LabVIEW VI) in step 502.

[0308] In step 504 the user can select a node in the graphical program,e.g., a sub-program or sub-VI node, a primitive node, or other type ofnode. The user may also be able to select a group of nodes by drawing a“box” around the desired nodes. The user may select a node by using apointing device or by other means.

[0309] In step 506 the user may then select among the various devices inthe configuration diagram, e.g., other computer systems or devices onwhich the user desires to have this node or sub-VI execute. For example,where the graphical program is stored on a first device, the user mayselect a second device icon corresponding to a second device andgraphically associate the node with the second device icon. The term“remote device” in this context simply means a different device than theone which currently stores the graphical program. This selection may beperformed in the same manner as an association, e.g., by using drag anddrop techniques, menus, dialog boxes, or speech recognition, among othermethods.

[0310] For example, FIG. 24A illustrates a block diagram of a LabVIEWgraphical program or VI wherein the user has selected a menu of a node,e.g., by right clicking on the node, and has selected a remote callfeature from the menu. When the user selects the remote call feature, alist of devices may appear for the user to select. User selection of adevice from this menu may cause deployment of the respective node (e.g.,deployment of the functionality represented by the node icon) to theselected device. Alternatively, the user may drag and drop a graphicalprogram node from the block diagram on to a device icon representinganother device to deploy the graphical program node onto the device forremote execution. For example, the user can select one or more nodes inthe graphical program and “drag and drop” them onto a device icon todeploy these nodes onto the respective remote device.

[0311] In step 508 the functionality of the node (or nodes) may bedeployed to the selected remote device, i.e., the device selected instep 506. In step 508 the functionality (e.g., program instructionsand/or data structures) of the node (or nodes) may be automaticallytransferred to the selected remote device based on the user input instep 506. In other words, each node in a graphical program may haveassociated program instructions and/or data structures, and these may beautomatically transferred to the selected remote device. As noted above,the user input may comprise selecting a remote device in step 506 from amenu, or may comprise graphically associating or dragging and droppingthe node onto a device icon of a device in the configuration diagram.

[0312] This deployment operation in step 508 may also involvedetermining if the device is capable of natively executing graphicalprogramming code. If the device is not capable of executing graphicalprogramming code, the graphical program code corresponding to this nodemay be converted to a DLL, hardware configuration program, or othersoftware format.

[0313] In step 510 a new icon may be displayed in the block diagram tovisually indicate to the user that this node is being remotely executed.The new icon may be a modified node icon which includes at least aportion of the appearance of the original node, as well as an additionalimage portion to indicate the remote execution. For example, FIG. 24Billustrates one example of the block diagram of FIG. 24A after the userhas selected this feature to remotely call this graphical program nodeor VI on a different device. As shown, the icon in the block diagramchanges its appearance to visually indicate to the user that this nodeor sub-program is deployed on a remote device and will execute on theremote device. In another embodiment, the icon in the block diagram doesnot change its appearance to visually indicate remote execution. In thisembodiment, the user may optionally select a certain view of the blockdiagram to highlight respective nodes that are configured for remoteexecution.

[0314] In step 512 the graphical program may be modified to be able toinvoke the node on the remote device. In other words, the graphicalprogram may include program instructions and/or data structures, andthese may be modified, e.g., new program instructions and/or datastructures may be added, to invoke the node on the remote device duringgraphical program execution. Alternatively, the graphical programexecution engine (the software that executes the graphical program) maybe modified to implement this remote invocation. Graphical code in thegraphical program may also be modified (or added) in the graphicalprogram to invoke the node on the remote device. For example, one ormore nodes may be added or modified in the graphical program (e.g., asdescribed in step 510) to visually indicate that the invocation isoccurring, and that the respective node is being invoked on the remotedevice. Added nodes may include associated program instructions and/ordata structures that are executable to invoke the node on the remotedevice.

[0315] Thus this remote call feature can be used to cause a selectednode or program, e.g., the selected sub-VI, to execute on a differentdevice or computer system, wherein the main graphical program or main VIcalls this sub-VI to execute on the remote device.

[0316] The deployment of a sub-program of a graphical program blockdiagram on a remote device is particularly useful where there aremultiple instances of the same sub-program in the main graphicalprogram, and the user desires to select a particular sub-program fordeployment.

[0317] Therefore, the user can configure a graphical program node forremote execution. Where the program is a graphical program, such as aLabVIEW VI, the user can display the main block diagram of the graphicalprogram. The user can select nodes in the graphical program andassociate, e.g., drag and drop, these graphical program nodes to deviceicons in the configuration diagram. As a result, the functionality ofthe nodes may be deployed to the selected remote devices. This providesa very simple mechanism for a user to distribute execution of agraphical program among a plurality of different devices in a system.

[0318] In one embodiment, the user may graphically configure or deployportions of any of various types of programs, including programs writtenin text-based and graphical programming languages. The method mayinvolve displaying source code of a program on the display of thecomputer system. The program may be written in a text-based programminglanguage, or may be a graphical program. The computer system display mayalso include a configuration diagram that displays a first device iconthat corresponds to a first device and a second device icon thatcorresponds to a second device. The program may be stored on the firstdevice. The user may then select a portion of the source code of theprogram and graphically associate the portion of the source code withthe second device icon.

[0319] Where the program is written in a text-based programminglanguage, the user may highlight the desired source code portion (e.g.,highlight the C code portion, such as a subroutine) and associate, e.g.,drag and drop, this code portion onto the second device icon. Thus, theuser can deploy portions of the source code onto devices other than thedevice on which the program is stored. Where the program is written in agraphical programming language, as described above, the user may selectone or more nodes in the graphical program and drag and drop them on thesecond device icon, e.g., or various device icons.

[0320] This graphical association may cause deployment of the sourcecode portion onto the second device for execution on the second device.In addition, the system may modify the program to configure the programto invoke execution of the source code portion on the second device.Thus, when the program executes, the program invokes execution of thedeployed source code portion on the second device.

[0321] Alternatively, where the program is written in an object-orientedprogramming language, and the software objects are represented by icons,the user may associate or drag and drop the various software objecticons to various device icons to deploy these software objects onvarious devices.

FIG. 25—Adding Program Code to Another Program

[0322] In one embodiment, the user can manipulate program icons to addprogram code to other programs. For example, the user can select a firstprogram icon or node, which may be associated with a device (e.g. afirst device), and associate this first program icon with (e.g., dragand drop onto) a second program icon of a second device (or of the firstdevice). This may cause the code (source code) of the second program(which corresponds to the second program icon) to be displayed. The usermay then further graphically navigate, e.g., move or drag, the firstprogram icon within the source code of the second program that has beendisplayed and drop or place the first program icon at a respectivelocation in the source code. The first program corresponding to thefirst program icon may be deployed to the second device for executionwithin the second program on the second device. Alternatively, at theuser's option, the first program may remain on the first device, and beconfigured for remote invocation by the second program on the seconddevice.

[0323] In another embodiment, the user may first cause the source codeof the second program (e.g., a block diagram of a graphical program) tobe displayed, and then the user may associate a first program icon with(or into) the displayed source code (e.g., the displayed block diagram).The user may then further graphically navigate the first program iconwithin the displayed source code of the second program and drop or placethe first program icon at a respective location in the source code. Thismay cause the various operations to be performed as mentioned above.

[0324]FIG. 25 is a flowchart diagram illustrating one embodiment ofoperation of adding program code to another program. FIG. 25 illustratesan embodiment where the user associates a first program icon with asecond program icon, thereby causing the source code of the secondprogram to be displayed. Many of the operations described below aresimilar where the user associates a first program icon with source codeof a program that is already displayed.

[0325] As shown, in step 522 the user can select a first program icon ornode associated with a device (e.g. a first device) and associate thisfirst program icon with (e.g., drag and drop onto) a second program iconof a second device (or of the first device). As noted above, thisassociation may be performed using any of the techniques describedabove, e.g., by using drag and drop techniques, menus, dialog boxes, orspeech recognition, among other methods. The user may also provideadditional user input (e.g., using the keyboard or a pop-up dialog)indicating that the first program is to be configured as a node in thegraphical program.

[0326] This association may cause the code (e.g., the source code) ofthe second program corresponding to this second program icon toautomatically be displayed. The first program icon (or another nodewhich represents the first program) may be displayed in the displayedsource code of the second program to allow the user to further positionthe first program icon (or other node) at a desired location in thedisplayed source code. In one embodiment, a new node, which mayrepresent an invocation of the first program, may be displayed in thesource code. When the source code is graphical source code, thegraphical program or block diagram may appear, and the program icon (oranother node that is operable to invoke the respective program) may bedisplayed within the graphical program. When the source code is atext-language program, the text language source code may be displayed,and the first program icon may appear within the displayed text languagesource code.

[0327] Thus, where the second program icon corresponds to a graphicalprogram in step 524, this association may cause the block diagramcorresponding to this program icon to automatically be displayed in step532. For example, when the user drags and drops the first program iconproximate to or onto the second program icon, the block diagram thatcorresponds to the second program icon may automatically appear at thelocation of the second program icon (or at a different location). Thefirst program icon (or a new node, possibly having a different iconicappearance) may appear in the displayed block diagram for furtherpositioning or navigation by the user.

[0328] In one embodiment, the first program icon appears in thedisplayed block diagram for further positioning or navigation by theuser. The first program icon may also be configured as a node (referredto as the “first program node”) at this time. Configuring the firstprogram icon as a first program node may simply comprise creating (orstoring) program instructions and or data structures that are associatedwith the first program icon. This configuration is described below instep 536.

[0329] As used herein, the term “first program node” simply connotes anode in the graphical program that is associated with the first programin some way, e.g., is operable or executable in the graphical program toaccess functionality or capabilities of the first program. For example,the first program node may be operable to invoke execution of the firstprogram, read and/or write values from/to the first program, get/setattributes of the first program, transmit/receive events to the firstprogram, programmatically modify the first program, programmaticallydeploy the first program, or perform other functions associated with thefirst program. The first program node preferably has an icon thatappears in the graphical program, and underlying program instructionsand/or data structures that implement the operation of the first programnode. The first program node icon may have the appearance of the firstprogram icon, or another appearance. For example, the first program nodeicon may have an appearance similar to the first program icon, butmodified to include the appearance of the first device icon of the firstdevice on which the first program is executing. The user may also createor select a custom appearance for the first program node, as desired.

[0330] Alternatively, a new node may appear in the graphical program forfurther navigation by the user, wherein the new node is associated withthe first program as described above. The new node may be present in thegraphical program development environment and specifically designed foraccessing functionality of the first program. For example, the new nodemay be specifically designed for accessing functionality of programs ingeneral, or of certain types of programs.

[0331] In step 534 the user may then further graphically navigate, e.g.,move or drag, the first program icon (or “new node”) within the blockdiagram that has been displayed and drop or place the first program icon(or “new node”) at a respective location in the block diagram. Thus,where the second program icon corresponds to a graphical program, theuser may graphically position the first program icon within the blockdiagram of the graphical program. In one embodiment, the user may selecta flow path, such as a data flow wire, in which to position or “drop”the first program icon. The first program icon may then be inserted onto or in the execution or data path of the selected wire in the secondblock diagram of the graphical program and configured to execute. Forexample, when the user selects a data flow path connected between asource node and a destination node, the first program icon may beinserted as a node in the data flow path with an input terminalconnected to an output terminal of the source node and with an outputterminal connected to an input terminal of the destination node. Theinput and output terminals may be automatically created for the firstprogram icon. Where the first program is also a graphical program, thefirst program icon may be inserted as a sub-VI in the second graphicalprogram or block diagram.

[0332] Where the first program icon is dropped or inserted the path of aselected wire in the second graphical program, the method mayautomatically create one or more input terminals and/or one or moreoutput terminals on the first program icon based on at least one of:parameters of the first program and parameters of the graphical program,e.g., parameters of the source and/or destination nodes to which thefirst program icon is being connected. The input terminals and/or outputterminals may be automatically created with the appropriate data typesbased on the preceding and/or subsequent (source and/or destination)nodes in the block diagram to which the first program icon will connect.The method may also involve automatically (or manually) connecting atleast one of the input terminals and/or output terminals of the firstprogram icon to an existing node in the graphical program.

[0333] In step 536 positioning of the first program icon in the sourcecode may cause additional source code, e.g., program instructions/datastructures and/or one or more nodes, to be included in the secondprogram. For example, where the second program icon corresponds to agraphical program, the first program icon may be copied or inserted intothe displayed block diagram at the selected location, effectivelyresulting in a new node (the “first program node”) in the block diagram.This may also cause program instructions and/or data structures to beincluded in the second graphical program which represent functionalityof the first program, or which are operable to call the first program.These program instructions and/or data structures may be associated withthe first program node in the second graphical program. Thus, in oneembodiment, the first program node may comprise an icon having theappearance of the first program icon, and underlying programinstructions and/or data structures that execute the functionality ofthe first program node. The first program node may be created during orafter positioning in step 536, when the first program icon is initiallydisplayed in step 532, or at other times during the method.

[0334] In one embodiment, the program instructions and/or datastructures associated with the first program icon (e.g., comprising apart of the first program node) may be executable to accessfunctionality or capabilities of the first program in some fashion. Forexample, in one embodiment, the program instructions and/or datastructures associated with the first program icon (e.g., comprising apart of the first program node) may be executable to invoke execution ofthe first program on the first device. Thus the graphical program(including the program instructions and/or data structures) may executeon the second device, and when the first program icon node in thegraphical program executes, the first program icon node (or theunderlying program instructions and/or data structures) may operate toinvoke the first program to execute on the first device. In anotherembodiment, the executable code which comprises the first program iconmay be deployed to the device (e.g., the second device) on which thesecond graphical program is located, and the first program icon mayappear as a node (first program node) in the second graphical programand be associated with the executable code. Thus, when the first programnode in the graphical program executes, the first program node (or theunderlying program instructions and/or data structures) may operate toinvoke the first program to execute on the second device. Alternatively,the executable code comprising the first program may itself be the“underlying program instructions and/or data structures” of the firstprogram node. As another example, the program instructions and/or datastructures associated with the first program icon (e.g., comprising apart of the first program node) may be executable to read data from thefirst program, write data to the first program, get/set attributes ofthe first program, modify the first program, or perform other functionsassociated with the first program, as mentioned above.

[0335] In another embodiment, a new node (e.g., a node whose specialpurpose is to invoke execution of programs on other devices) may becreated in the second graphical program that is operable to invoke thefirst program. In this instance, the first program may remain where itis and be remotely accessed or invoked.

[0336] Where the first program is a software object, in one embodimentthe program instructions and/or data structures associated with thefirst program icon may be executable to invoke methods of the softwareobject, get/set properties of the software object, and/orprovide/receive events to/from the software object, or otherwise accessfunctionality of the software object.

[0337] In step 538 the first program corresponding to the first programicon may be deployed to the second device for execution with the blockdiagram on the second device. Alternatively, at the user's option, thefirst program may remain on the first device, and configured for remoteinvocation and execution on the first device by a node (e.g., firstprogram node) in the block diagram executing on the second device.

[0338] As noted above, the first program may not be a graphical program.For example, the first program may be written in a text-basedprogramming language, such as Pascal, Fortran, C, C++, Java, Basic, etc.In one embodiment, the graphical program is created in a first graphicalprogram development environment, and the first program is not present inthe first graphical program development environment. For example, thefirst program may be created in a second program developmentenvironment, wherein the second program development environment isdifferent than the first graphical program development environment. Thefirst program thus may be operable to execute independently of thegraphical program and/or the first program may exist prior to creationof the graphical program.

[0339] As noted above, the first program icon that is being dragged anddropped into the block diagram may be of a different type than thegraphical program, such as a DLL or an executable program compiled froma text based programming language, etc. When the user drags and dropsthis first program icon into the block diagram corresponding to thesecond or destination program icon (e.g., on to a respective dataflowpath) this mismatch in types may be automatically detected (or the usermay manually indicate the mismatch), and a node may be automaticallycreated that is able to invoke or call this type of program. Forexample, if the first program is a DLL, and the user drags the firstprogram icon into a block diagram (e.g., on to a data flow wire of ablock diagram), the graphical program development environment (or othersoftware) may detect that the first program is a DLL, and a node, e.g.,a “DLL node” may be inserted into the block diagram that is configuredto invoke the first program as a DLL. The DLL node may have theappearance of the first program icon. The user may then “wire up” theDLL node, or if the user dropped the first program icon on to arespective data flow wire, the DLL node may appear connected to thewire. As another example, if the first program is a software object, andthe user drags the first program icon into a block diagram, thegraphical program development environment may detect that the firstprogram is a software object, and a node, e.g., an “object node” may beinserted into the block diagram that is configured to invoke methods,get/set attributes, etc, of the first program as a software object.Alternatively, the first program may be programmatically converted intoa graphical code format, e.g., LabVIEW code, and this created graphicalcode may execute natively in the block diagram. As another alternative,a graphical program code “wrapper” may be created around the firstprogram, thus enabling the first program to execute in the graphicalprogram development environment.

[0340] Where the second program icon corresponds to a textualprogramming language based program in step 524, this association maycause the textual source code corresponding to this program icon toautomatically be displayed in step 542.

[0341] In step 544 the user may then further graphically navigate, e.g.,move or drag, the first program icon within the textual source code thathas been displayed and drop or place the first program icon at arespective location in the textual source code.

[0342] In step 546 this may cause a call or invocation (e.g., a functioncall) to the first program to be copied or inserted into the displayedtextual source code of the second program at the selected location. Thetype of call inserted into the displayed textual source code of thesecond program may depend on whether the first program is a graphicalprogram or another type of program.

[0343] In step 548 the first program corresponding to the first programicon may be deployed to the second device for execution with the blockdiagram on the second device. Alternatively, at the user's option, thefirst program may remain on the first device, and configured for remoteinvocation by the textual source code program (after compilation) on thesecond device.

[0344] Thus the user can select a first program icon associated with adevice and associate this first program icon with (e.g., drag and droponto) a second program icon of a different device. Where the secondprogram icon corresponds to a graphical program, this association maycause the block diagram corresponding to the second program icon toautomatically be displayed. In another embodiment, the user may firstcause the graphical program or block diagram to be displayed, and thenmay select a first program icon associated with a device and associatethis first program icon with (e.g., drag and drop into) the displayedgraphical program or block diagram. The user may then furthergraphically navigate, e.g., move or drag, the first program icon withinthe block diagram that has been displayed and drop or place the firstprogram icon at a respective location in the graphical program.

[0345] This may cause different things to happen:

[0346] In response to the association, the first program icon may becopied or inserted into the displayed block diagram at the selectedlocation. The first program corresponding to the first program icon maybe deployed from the first device onto the second device for executionon the second device with the block diagram

[0347] In response to the association, the first program may remain onthe first device and be configured for remote invocation by the blockdiagram on the second device. For example, the user can drag and dropother program icons onto a node icon in the graphical program to specifythat the respective programs are invoked by the graphical program, e.g.,by a specific node in the graphical program.

[0348] If the user drags and drops the first program icon onto a secondprogram icon that corresponds to a graphical program, then that firstprogram icon may be inserted at the appropriate location in thedestination graphical program as a graphical program node, or asub-program or “sub-VI”. For example, the block diagram of thedestination graphical program may appear and the user may then select aflow path, such as a data flow wire, in which to “drop” the firstprogram icon. The first graphical program may then be inserted on to orin the execution or data path of the selected wire in the second blockdiagram of the graphical program and configured to execute. If the firstprogram icon which is being associated (e.g., dragged and dropped) alsocorresponds to a graphical program, then the first program icon may beinserted as a sub-VI.

[0349] The first program icon that is being dragged and dropped into thesource code, e.g., block diagram, may also be of a different type, suchas a DLL or an executable program compiled from a text based programminglanguage, etc. When the user drags and drops this first program iconinto the block diagram corresponding to the destination program icon,and optionally on to a respective dataflow path, a node may beautomatically created, e.g., in the respective dataflow path, that isable to invoke or call this program, or that represents execution ofthis program. For example, if the first program is a DLL, and the userdrags the first program icon on to a data flow wire of a block diagram,a “DLL node” may be inserted into the block diagram that is configuredto invoke the first program as a DLL. Alternatively, the first programmay be programmatically converted into a graphical code format, e.g.,LabVIEW code.

[0350] Where the second program icon corresponds to a textualprogramming language based program, this association may cause thetextual source code corresponding to this program icon to automaticallybe displayed. The user may then further graphically navigate, e.g., moveor drag, the first program icon within the textual source code that hasbeen displayed and drop or place the first program icon at a respectivelocation in the textual source code. This may cause a call or invocation(e.g., a function call or method invocation) to the first program to becopied or inserted into the displayed textual source code of the secondprogram at the selected location. The type of call inserted into thedisplayed textual source code of the second program may depend onwhether the first program is a graphical program or another type ofprogram.

FIG. 26—Incorporating a Device Icon Into a Program

[0351] As mentioned above, the user may associate (e.g., drag and drop)a device icon into the source code of a program, similar to dragging anddropping a program icon into the source code of a program as describedabove. The device may correspond to a first device, and the program maybe stored on a second different device. The following describes thisoperation where the program or source code is a graphical program orblock diagram. However, the description below also applies where theprogram or source code is written in a textual programming language.

[0352] After the association of a device icon with (or into) a blockdiagram or graphical program, the user may then optionally indicate anoperation that is desired with respect to this device in the blockdiagram. For example, the user may drag and drop a device icon of afirst device into a block diagram, wherein this indicates that the blockdiagram should create code and/or data structures, and/or should includea node icon in the diagram, which operates to programmatically accessthis device to publish and/or subscribe data to/from the device. Othertypes of operations are also contemplated.

[0353]FIG. 26 is a flowchart illustrating operation of creating ormodifying a graphical program by associating device nodes with thegraphical program. For example, the user may use a configuration diagramas described herein to aid in creating (or configuring) a portion or allof a graphical program.

[0354] As shown, in step 642 the graphical program may be displayed onthe display. For example, where the graphical program includes a blockdiagram, the block diagram may be displayed. The user may havepreviously included various nodes or icons in the graphical program andmay have connected various ones of these nodes.

[0355] As described above, the block diagram may automatically bedisplayed in response to an association performed by the user in step644. In other words, the user may drag and drop a device icon onto aprogram icon in the configuration diagram. Where the program iconrepresents a graphical program, this may cause the block diagramcorresponding to the program icon to be automatically displayed. Thedevice icon may then automatically appear in the block diagram forfurther navigation or positioning by the user.

[0356] In step 644 the user may associate (e.g., drag and drop) one ormore device icons into the block diagram. For example, the user mayassociate, e.g., drag and drop a first device icon corresponding to afirst device into the block diagram of a graphical program stored on asecond device. Where the block diagram is already displayed, this maycomprise the user simply selecting a device icon with a mouse anddragging the device icon into the displayed block diagram. As describedabove, where the block diagram is not already displayed, and a programicon is displayed on the configuration diagram that represents thegraphical program or block diagram, the user can select the device iconwith a mouse and drag the device icon proximate to or onto the programicon (or use other graphical association techniques). This may cause thegraphical program or block diagram corresponding to this program icon tobe displayed, with the device icon displayed in the graphical program orblock diagram for further graphical positioning by the user. This mayinstead cause a “new node”, such as a “device access node” to bedisplayed in the block diagram, wherein this “new node” may begraphically positioned by the user.

[0357] In step 646 the user may graphically position the device icon toa desired location in the block diagram. For example, in step 646 theuser may then further graphically navigate, e.g., move or drag, thedevice icon (or “new node”) within the block diagram that has beendisplayed and drop or place the device icon (or “new node”) at arespective location in the block diagram. Thus, where the program iconcorresponds to a graphical program, the user may graphically positionthe device icon (or new node) within the block diagram of the graphicalprogram. In one embodiment, the user may select a flow path, such as adata flow wire, in which to position or “drop” the device icon (or newnode). The device icon (or new node) may then be inserted on to or inthe execution or data path of the selected wire in the second blockdiagram of the graphical program and configured to execute. For example,when the user selects a data flow path connected between a source nodeand a destination node, the device icon may be inserted as a node in thedata flow path with an input terminal connected to an output terminal ofthe source node and with an output terminal connected to an inputterminal of the destination node. The input and output terminals may beautomatically created for the device icon.

[0358] In step 648 the actions performed by the user in steps 644 and646 may cause the automatic creation of nodes in the block diagram topublish and/or subscribe to data from the respective device(s), orperform other functions associated with the devices. Automatic creationof a node in the block diagram may comprise displaying the device iconin the block diagram, and automatically creating program instructionsand/or data structures associated with the device icon which performfunctionality associated with the device, such as accessing (readingand/or writing data values from/to the device). Automatic creation of anode in the block diagram may also comprise displaying a new node (e.g.,“a device access node”), and creating or including program instructionsand/or data structures associated with the new node, that is operable toaccess the device during graphical program execution. Where the new nodehas the appearance of the device icon, then the above two operations maybe similar.

[0359] Thus the automatic creation of node(s) in the block diagram maycomprise automatic creation of program instructions and/or datastructure which perform functionality of the node(s). For example, thedevice icon may appear in the block diagram, and underlying code or datastructures may be created that correspond to the device icon whichoperate to publish and/or subscribe to data from the respectivedevice(s), or perform other functions associated with the devices.

[0360] As one example, the user may configure a measurement applicationby inserting a loop structure, such as a While loop, into a blockdiagram. The user may then drag and drop one or more device icons intothe While loop. The device icons may correspond to various devices whichproduce data, such as sensor or transducer devices, or instrumentdevices. As described above, when a user associates (e.g., drags) adevice icon on to a program icon, and the program icon corresponds to agraphical program, this may cause the block diagram of the graphicalprogram to automatically appear in the display, whereby the user canthen further navigate the device icon at an appropriate location in theblock diagram. Alternatively, if the block diagram window of thegraphical program is already open on the display, such as in a separatewindow, the user may simply drag and drop a device icon from theconfiguration diagram onto the graphical program block diagram.

[0361] When the device icon(s) corresponding to the sensors orinstruments are dropped into the While loop of the block diagram, codeand/or graphical program data structures may be created with respect tothe block diagram that are operable to access these devices, or usethese devices in some way. The device icons which are dragged anddropped into the block diagram may retain the same appearance, i.e., asdevice icons contained in the block diagram. Alternatively, this maycause new nodes to be programmatically created in the diagram which areoperable to access these devices and obtain the data.

[0362] After this operation, the device icons (or other nodes) mayappear within the block diagram, indicating that data is being accessedfrom (or other functions are being performed with respect to) thesedevices. A further visual indication may also be provided as to whetherthese devices are publishing data to the diagram or subscribing to datafrom the diagram, i.e., whether the diagram is subscribing to data fromthese devices, or publishing data to these devices. The While loop mayindicate repetitive operation of the device icon(s) in reading and/orwriting data from/to the respective device(s).

FIGS. 27A-E—Example of Incorporating a Device Icon into a Program

[0363] FIGS. 27A-E are screen shots illustrating a sequence where theuser drags a device icon onto a particular program icon, and inserts thedevice icon into the program represented by the program icon. Theexample described in FIGS. 27A-E applies whether the user isincorporating a device icon or a program icon into the program. In otherwords, although FIGS. 27A-E are described in the context of the userdragging a device icon into the source code of a program, this exampleoperates a similar manner (and in one embodiment in an identical manner)when the user drags a program icon into the source code of a program.

[0364] As shown, FIG. 27A illustrates a first configuration diagram(“bread factory configuration diagram”) which includes two computersystem device icons and an oven controller device icon. The user canassociate or drag-and-drop the oven controller device icon onto aconfiguration diagram icon, another device icon, a program icon, orother icon present in the configuration diagram. As shown in FIG. 27A,the user associates or drags-and-drops the oven controller device icononto a configuration diagram icon, i.e., an icon that represents asecond configuration diagram. In FIG. 27A, the second configurationdiagram is referred to as the “cookie factory configuration diagram”.

[0365] When the user associates or drags and drops the oven controllerdevice icon on the cookie factory configuration diagram, the cookiefactory configuration diagram may be automatically expanded to show oneor more device icons comprised in the configuration diagram. In thescreen shot of FIG. 27B, the cookie factory configuration diagram hasbeen expanded to show two device icons representing computer systemsthat perform manufacturing and packing. These two computer system deviceicons may be connected by a link, as shown.

[0366] As shown in FIG. 27C, the user may further choose to expand themanufacturing computer device icon to reveal another device iconreferred to as “Baking”. For example, the manufacturing device icon maybe expanded in a hierarchical fashion to reveal devices that performmanufacturing functionality. Alternatively, all device icons present inthe configuration diagram may be automatically displayed when theconfiguration diagram is initially expanded in FIG. 27B.

[0367] As shown in FIG. 27D, the user may then choose to view one ormore program icons present in the device icon. As shown, a program iconrelated to oven management (“Oven Mgt”) has been displayed. In oneembodiment, when the user positions the oven controller device icon overthe final device icon in the hierarchy (i.e., there are no furtherdevice icons in the hierarchy, the top level (or all) program icons maybe automatically displayed.

[0368] The user may then select an option to view the programrepresented by this program icon. In one embodiment, when the userpositions a device icon, such as the oven controller device icon, overthe respective program icon, the program (source code and/or userinterface of the program) may be automatically displayed. Alternatively,when the user positions the oven controller device icon over therespective program icon, the user may provide further input to view oneor more aspects of the program (source code and/or user interface of theprogram). In this exemplary embodiment, the program is a graphicalprogram, and a graphical program block diagram is displayed as shown inFIG. 27E. FIG. 27E illustrates a very simple and exemplary graphicalblock diagram which includes a loop structure and includes a singleexisting icon or node. The graphical program may have a larger number ofinterconnected nodes, such as those shown in FIGS. 24A and 24B.

[0369] In one embodiment, when the user associates a device icon with aprogram icon corresponding to a graphical program, and the diagramportion of the graphical program is displayed, the device icon appearsin the diagram portion. In another embodiment, when the user associatesa device icon with a program icon corresponding to the graphicalprogram, and the diagram portion of the graphical program is displayed,a new graphical program node appears in the diagram portion. This newgraphical program node corresponds to the respective device and mayrepresent functionality performed by the device. This graphical programnode may have the same or a different appearance than the device icon towhich it corresponds. The graphical program node may be programmaticallycreated based on information in the device icon, or may be a genericdevice access node for accessing a device.

[0370] Although not shown in FIG. 27E, the user may then choose tonavigate or move the device icon or graphical program node within thegraphical block diagram. For example, the user can position the deviceicon at a certain location in the diagram, which indicates a certaintype of operation. As another example, the user can “wire up” the deviceicon (or the created graphical program node) with other nodes or iconsalready present in the block diagram. In this operation, the graphicalprogram may automatically create terminals on the device icon (or on thecreated graphical program node), possibly based on the terminals of theexisting nodes in the block diagram to which the user is connecting thedevice icon.

[0371] As another example, the user can navigate or move the device iconor node onto an existing wire or connection path and place the deviceicon or node as a graphical program node in this connection path. Forexample, the user can navigate or position the device icon or node to afirst location on a wire in the graphical program after a first node inthe graphical program. The method may then display the device icon ornode as a node connected to an output of the first node in the graphicalprogram. The user can also navigate or position the device icon to afirst location on a wire in the graphical program before a second nodein the graphical program. The method may then display the device icon ornode as a node in the graphical program connected to provide an outputto the second node in the graphical program. As another example, theuser can navigate or position the device icon or node to a wire orconnection path in the diagram between a first node and a second node,and cause the device icon to appear in the diagram as a node connectedin the connection path between the first node and the second node.

[0372] The device icon, or a node that represents the device icon, mayhave various functionality. For example, the node may invokefunctionality of the device represented by the device icon, simulateoperation of the device, invoke programs on the device, acquire datafrom the device, generate data to the device, etc. In one embodiment, aGUI element may appear, such as a menu, and the user can select thefunctionality desired.

[0373] As described above, the method may programmatically create a nodein the diagram which performs an operation associated with the deviceicon. In one embodiment, the device icon is automatically modified, or anew node is automatically created, which includes one or more inputterminals and/or one or more output terminals for connection to othernodes in the diagram. The input terminals and/or output terminals may becreated based on parameters of the respective graphical program (ornodes in the graphical program) or of the device corresponding to thedevice icon. The user may then connect these terminals to other nodes inthe diagram. The respective terminals may also be programmaticallyconnected to other nodes in the diagram. Alternatively, the user maymanually configure terminals for the node, e.g., configure a connectorpane for the node. Type propagation checking may also be performed toensure that incompatible data types are not connected to/from this node.

[0374] Therefore, this embodiment of the present invention allows theuser to associate or drag and drop a device icon onto a respectiveprogram icon. The user can associate a device icon directly onto arespective program icon that is currently displayed, or the user cannavigate through a configuration diagram/device icon/program iconhierarchy to view a desired program icon. The source code of the programmay be displayed, and the user can position the device icon in thesource code. If the respective program icon corresponds to a graphicalprogram, the diagram portion of the graphical program may be displayed,with the respective device icon (or a node corresponding to the deviceicon) displayed in the graphical program diagram. The user may thennavigate or move the device icon (or node) to a desired location in thegraphical program, and optionally wire up or connect the device iconwith other nodes in the graphical program, etc.

[0375] The method described above may also operate where the programrepresented by the program icon is a text based program. For example,when the user associates or drags and drops a device icon onto a programicon that represents a text based program, the text based source code ofthe program may be displayed. The user may then be able to navigate thedevice icon into a particular location into the textual source code.This may cause a function call or other appropriate textual source codeto be inserted at this location in the textual source code.

[0376] In another embodiment, when the user associated or drags anddrops a device icon onto a program icon, the user interface (e.g., frontpanel) of the program may appear. In one embodiment, the user has thechoice of having either the source code or diagram portion of theprogram appear, or the user interface or front panel of the program toappear, or both. Alternatively, the user may open the user interface orfront panel of the program and then drag and drop the device icondirectly to the user interface. The user may navigate the device icon(or node) to an appropriate location in the user interface. Theoperation of associating a device icon with a user interface may cause aGUI element (e.g., a control or indicator) to appear in the userinterface. This operation may also cause a “binding” to occur betweenthe GUI element and data generated by and/or acquired by the respectivedevice.

[0377] The above operations greatly facilitate the creation of graphicalprograms and the distribution of portions of these graphical programs todifferent devices in a distributed system. For example, the user cancreate a graphical program in various manners and then during or afterthe graphical program creation the user can associate (e.g., drag anddrop) icons from within the block diagram to different devices to deployor distribute the functionality represented by these node icons in thediagram on to these respective devices. Also, the user can associatedevice icons into a graphical program, or can associate other programicons for various devices into the graphical program.

[0378] These techniques provide a simple and convenient way for a userto create an application using a graphical program, whereby the user candeploy different programs of the graphical program application todifferent devices, or incorporate functionality associated with otherdevices or programs using device icons or program icons, respectively.

FIGS. 28A and 28B

[0379]FIGS. 28A and 28B are screen shots illustrating incorporating aprogram icon from a configuration diagram into a graphical program. FIG.28A illustrates a configuration diagram which includes a device icon 802that represents a host computer, and a device icon 804 that represents ameasurement or control device, in this case a Fieldpoint device(referred to as “Engine Controller”) from National InstrumentsCorporation. The device icon 804 includes a number of associated programicons 842-850. In this example the program icons are service icons842-850. The service icons 842-850 include a Start icon 842 for startingthe application program, a Set Engine Params icon 844 for modifying orviewing parameters of the application or device, a Stop icon 846 forstopping the application, an Engine Status icon 848 for checking thestatus of the application or device and a Shut Down icon 850 forshutting down the application or device. Service icons represent a highlevel mechanism for interacting with an application or a device, and aredescribed further below.

[0380]FIG. 28B illustrates an example where the user associates or dragsand drops a program icon (e.g., program icon 846) onto a block diagramof a graphical program. In one embodiment, the program icon 846 may bedragged and dropped into the block diagram, and the program icon doesnot change its appearance during this operation. In another embodiment,when the program icon 846 crosses the border of the block diagram windowduring the drag and drop operation, the program icon 846 may change itsappearance, or a new node icon may be displayed in its place.

[0381] Once the program icon has been “dragged” or positioned in theblock diagram, the user can then wire up this program icon 846 withother nodes in the graphical program. Alternatively, the user can dropor place this program icon 846 onto a wire or link in the graphicalprogram. This may cause the program icon 846 to appear as a node in thegraphical program connected in the path of this wire or link. In oneembodiment, terminals may be automatically added to the program icon,wherein the wire or link connects to these terminals. Thus the programicon may be configured to connect to one or more other nodes in thegraphical program.

[0382] Configuring a Device Icon in a Configuration Diagram

[0383]FIG. 29 illustrates a simple configuration diagram or systempanel. As shown, this exemplary configuration diagram includes a deviceicon 802 which represents a host computer, and a device icon 804 whichrepresents a measurement or control device. In this example, the deviceicon 804 represents a Fieldpoint device from National Instruments, whichmay be used for measurement or control applications. As shown, the usercan select the device icon 804 representing the Fieldpoint device, uponwhich one or more menus may be displayed. The user can select variousoptions from these menus.

[0384] As shown, the user can select the configuration option on a firstmenu. This selection produces a second menu that has items for network,I/O, and data points, e.g., tags. As used herein, the term “data point”includes a data point, I/O point, data tag, I/O channel data values, andother types of data values. The data point may be associated with orgenerated by a device, or may be calculated by a program. When the userselects the network option, the user may receive further options forconfiguring the IP address of the device, or a security aspect of thedevice.

[0385] Although not shown in FIG. 29, when the user selects the I/Oselection, in one embodiment a measurement configuration program, suchas Measurement and Automation Explorer from National Instruments, may beinitiated to configure I/O channels. If I/O channels already exist orhave previously been configured, then these items may be displayed, asshown in FIG. 30. Thus, when the user selects the I/O or tags items inFIG. 29, if physical I/O points had previously been configured, or datapoints or tags had previously been configured, then informationregarding these may be displayed. For example, as shown in FIG. 30, ifthe user selects the I/O menu item, various configured I/O channels maybe illustrated, such as analog input, analog output, or digital I/O. Asalso shown in FIG. 30, if the user selects the tags or data points item,various configured data points may be shown, such as, e.g., pressure,temperature, RPM etc. Thus, as shown in FIG. 30, the system may displayconfigured I/O or configured data points. These items may be displayedin a “tree view”, or other suitable view. The system may also display an“add new” feature which allows the user to add new physical I/O or datapoints directly to the tree structure shown in FIG. 30.

[0386]FIG. 30 also shows an example where a user may select a helpfeature for a device icon. For example, the user may right click on thecontroller 1 device icon 804 and select a help feature. The help window“Context Help” may then appear as shown in FIG. 30. The help window mayprovide various information about the device, such as the name of thedevice, security privileges, installed software, IP address, calibrationinformation and other information. The help window may be contextsensitive. Thus, once a help feature has been selected, and a helpwindow appears as shown, the user may move his/her mouse across theconfiguration diagram to view context sensitive help related to otherdevice icons, program icons, or other items displayed. Thus, as the usermoves the mouse onto different device icons, this causes contextsensitive help for that respective device to appear in the help window.Similar operation occurs for other icons, such as program icons.

[0387] As also shown in FIG. 30, the user can select a data point itemand select various options. For example, the user can select an analoginput item (e.g., AI1), which causes a menu to be displayed, from whichthe user can probe the I/O point (data point) or configure properties ofthe I/O point. Another feature of the “tree view” shown in FIG. 30 isthat every individual tree is preferably collapsible. Thus, the user canchoose to see only programs, only data points, only I/O channels, or anentire hierarchical view.

[0388] In large distributed systems, the configuration diagram (orsystem panel) can include a number of different device icons. In oneembodiment, the user can select a particular device icon and cause thisdevice icon to be the only device icon displayed on the screen.Alternatively, the user can select a device icon, causing the deviceicon to be displayed in a separate panel. The user can then expand thedevice icon to view various views (e.g., tree views) of the device icon,such as program icons representing programs stored on the device, datapoints present in the device (such as I/O channels), configuration datasuch as IP address, etc. The user can also use a browse feature tobrowse among or discover new/old devices. The user can further select anoption to add/show new (or un-configured) devices automatically.

FIG. 31—Deploying a Program to a Device

[0389]FIG. 31 illustrates an example of deploying a program representedby a program icon onto a target device. The example shown in FIG. 31corresponds to the methods described above with respect to FIGS. 15-18.As shown, FIG. 31 illustrates a configuration diagram which includes adevice icon 802 that represents a host computer, and a device icon 804that represents a measurement or control device, in this case aFieldpoint device (referred to as “Controller1”) from NationalInstruments Corporation. As shown, the host computer device icon 802includes a program icon referred to as PID 806, which represents a PIDcontrol program. In this example, the PID program icon 806 represents aPID virtual instrument or VI developed in LabVIEW. As shown, the usercan select the PID program icon 806 and associate (e.g., drag and drop)the PID program icon 806 onto the target device icon 804, i.e., theFieldpoint device icon 804 referred to as Controller1. After the userhas performed this drag and drop operation, the program represented bythe program icon 806 is deployed onto the target device (Controller1).This is graphically illustrated in the configuration diagram whereby thePID program icon 806 a is shown displayed associated with, e.g.,underneath (and possibly connected with), the device icon correspondingto the Fieldpoint device.

[0390] After a program icon has been deployed onto the device, it may bedesirable to run the program or perform various debugging operations. Inone embodiment, the user can select the program icon and start theprogram, or configure the program to start at a selected time. In thecase where the device does not include its own native displaycapability, in one embodiment, debugging operations can be performedusing the display of the host computer system. The display of the hostcomputer system may be used to display debugging operations, such asexecution highlighting, single stepping and other debugging features,for a program that is executing inside the target device.

FIG. 32—Associating a Data Point (or I/O Channel) with a Program FrontPanel

[0391]FIG. 32 illustrates an example of a user selecting a data pointitem associated with a device icon (Controller1) and associating ordragging and dropping this data point item onto the user interface orfront panel of a program. Similar operations may be performed when theuser associates a device icon with the user interface or front panel ofa program. In this example, the user has selected the RPM (RevolutionsPer Minute) data point item and has dragged and dropped this data pointitem onto the front panel of a graphical program, such as the frontpanel of a LabVIEW VI. When the user associates or drags and drops adata point item onto the user interface or front panel of a program, inone embodiment, the system may automatically create or display a GUIelement, e.g., an indicator or control, in the user interface or frontpanel that is associated with this data point. This GUI element may be“bound” to the data point. For example, the GUI element may be used tomonitor the value of the data point in a “live” fashion, e.g., the valueof the data point may be displayed in the GUI element in real timeduring program execution. The binding may be accomplished using datasocket technology as described in U.S. Pat. No. ______ (application Ser.No. 09/185,161) titled “Data Socket System and Method for Accessing DataSources Using URLs”, which is hereby incorporated by reference. If theGUI element is a control, the GUI element may be used to control orchange the value or parameters of the data point, either statically ordynamically during run-time. This drag and drop operation may thus causea data binding to be created between the GUI element and the data point.Thus, the user can view this GUI element to monitor the value of thedata point in a “live” fashion, and may optionally adjust the data pointvalue or parameters associated with the data point value.

[0392] In one embodiment, when the user associates or drags and drops adata point onto a program front panel or user interface, the systemautomatically creates (e.g., selects an displays) a type of GUI elementthat is appropriate for the type of data represented by the data point.For example, if the data point represents a signal, the system mayautomatically create or display a chart, waveform or graph GUI elementthat is capable of displaying the signal. The range or scale of the GUIelement may also be configured to display the signal appropriately. Asanother example, if the data point represents a Boolean value, thesystem may automatically create a Boolean indicator. In addition, if thedata point is a read-only data point, that the system may create a anindicator for this data point. If the data point is write only, thesystem may create a control for this data point. If the data point isboth readable and writeable, then the system may create both a controland indicator for this item, or a single GUI element that is bothreadable and writeable.

[0393] It is noted that similar operations to those described above maybe performed when the user associates (e.g., drags and drops) an iconrepresenting other types of data points, such as an I/O element orchannel icon (such as AI1) onto a program front panel. Thus, when theuser associates (e.g., drags and drops) an I/O element or channel (suchas AI1) onto a program front panel, a GUI element (e.g., control orindicator) may be created which can be used to display the value of thechannel and/or manipulate the value of the channel. When the userassociates a device icon onto a program user interface or front panel, aGUI element may be created which displays data associated with thedevice, or which can control data associated with the device.

FIGS. 33A and 33B—Associating a Data Point (or I/O Channel) with aProgram Block Diagram

[0394]FIG. 33A illustrates an example where the user has selected a datapoint item, such as RPM, and has associated or dragged and dropped thisdata point item onto the block diagram of a graphical program. As shown,this drag and drop operation may cause a graphical program element,e.g., a node 824, to appear in the block diagram that corresponds to thedata point item. The graphical program element 824 may correspond to thedata point icon and may be operable to programmatically access, i.e.,read and/or write values from/to the data point. In other words, thegraphical program element may be operable to read and/or write the datapoint during graphical program execution. This graphical program elementor node 824 may be configured with various functions or properties. Inthe example shown in FIG. 33A, the graphical program element has thecapability to “Log Historical Data” of the data point or “Get Trend” ofthe data.

[0395] As shown in FIG. 33B, the user can then connect this graphicalprogram element with other nodes in the block diagram to affectprogrammatic access, i.e., reading of or writing to, data and/orparameters of this data point. The user can also connect this graphicalprogram element with GUI elements (or a terminal of a GUI element) toenable user access or control of the data point.

[0396] For example, the user can connect the output of a function node(e.g., “Calc RPM 822) in the graphical program to the graphical programelement 824 that represents the RPM data point (the “RPM graphicalprogram element). Thus, during graphical program execution, a functionnode may write a value to the RPM graphical program element 824 thatprogrammatically changes a parameter value or data value of the RPM datapoint. As another example, the user can wire an output of the RPMgraphical program element 824 to another function node (e.g., node 826)so that this other function node 826 can read parameter values or datavalues of this data point. As another example, the user can wire a GUIelement (or the terminal of a GUI element) to the RPM graphical programelement to enable the user to view or modify values associated with thedata point during (or either before or after) program execution.

[0397] In the example of FIG. 33B, the user has wired a “Calc RPM” node822 to an input of the RPM node 824, wherein the Calc RPM node 822operates to calculate the RPM value for the data point and write thiscalculated RPM value to the RPM data point represented by node 824. Theuser has also wired a data logging node 826 to an output of the RPM node824, wherein the data logging node 826 operates to log values of the RPMdata point to a file.

[0398] Thus, as described above with respect to FIGS. 32, 33A and 33B,with a simple drag and drop operation of a data point item onto theblock diagram of a graphical program, a graphical program elementcorresponding to this data point is included in the diagram. The usercan easily configure the graphical program element that corresponds tothis particular data point for programmatic access or user access. Witha simple drag and drop operation of a data point item onto the frontpanel of a graphical program, a GUI element corresponding to this datapoint is included in the front panel. This allows user viewing ormodification of parameters or data of this data point during programexecution. In addition, the same functionality may be used for otheritems associated such as a device icon or program icon, or various typesof data points such as I/O channels, e.g., analog input, analog outputor digital I/O channels.

[0399] The user can of course also drag and drop other items associatedwith device icons into a program, such as the block diagram of agraphical program. For example, as described above, the user can dragand drop program icons for a program stored on a device into the blockdiagram of a graphical program. As another example, a device representedby device icon may include one or more files or configuration data,whereby the user can select a graphical item or icon representing thisfile or configuration data and drag and drop this item onto the blockdiagram (or front panel) of a graphical program. This may also allowprogrammatic access to this file or configuration data.

[0400] It is also noted that the method described in FIGS. 32 and 33 mayalso be used with text based programs rather than graphical programs.For example, the user may drag and drop a data point item (e.g., I/Ochannel item) into a particular location in a C-language program,causing appropriate function call or C programming statements toautomatically be included in the program. These textual programmingstatements may be operable to programmatically read and/or write to thisdata point. The user may also drag and drop a data point item (e.g., I/Ochannel item) into the user interface associated with a text languageprogram, with similar operation as described above for the userinterface of a graphical program.

FIG. 34—Start Up Application Feature

[0401]FIG. 34 illustrates an example where the user has previouslydeployed a program onto a target device as described above with respectFIG. 31. In FIG. 34, the user has selected the PID program iconassociated with Controller1 and has selected a “start up application”feature. When this feature is selected, every time the respective targetdevice is powered on or boots up, the program corresponding to theprogram icon is executed.

FIG. 35—Service Icons

[0402]FIG. 35 illustrates a device icon which includes a number ofassociated service icons. Service icons represent a high level mechanismfor interacting with an application or a device. As one exemplary use,it may be presumed that a developer desires to create an applicationthat may then be used by other users. In this example, the user maydesire to hide various program icons which represent underlying programfunctionality, and rather only expose certain basic services of theapplication. In FIG. 35, service icons 842-850 are displayed whichcorrespond to starting the application program (842), modifying orviewing parameters of the application or device (844), stopping theapplication (846), checking the status of the application or device(848), or shutting down the application or device (850). Thus, the usercan package up an application and distribute his application to a numberof different users, whereby the receiving users may only view theservice icons 842-850. These service icons 842-850 provide basic highlevel functionality, without exposing the underlying program structure.

FIG. 36—Copying Device Settings to other Devices

[0403]FIG. 36 illustrates an example where a user desires to copy thesettings from a first device icon and then optionally “paste” orconfigure the settings onto a second device icon corresponding to asecond device. Here, the user may select or right click on a firstdevice icon (e.g., device icon 804) and select a “Copy settings from”option from a menu. This operates to copy the settings of the respectivedevice corresponding to the first device icon 804. The user may thenselect a second device icon (not shown) corresponding to a second deviceand paste the settings onto that second device. This provides an easymechanism to copy settings among various devices.

[0404] Remote Debugging

[0405] In another embodiment, remote debugging of graphical programblock diagrams may be performed in a distributed system. For example,where a graphical program is deployed on a remote device, the user atthe main computer 82 may be able to select the device icon and/or selecta respective program icon associated with the device and view the blockdiagram of the graphical program. The user may be able to view the blockdiagram on the display of the main computer system, wherein this blockdiagram is actually executing on a remote device. The user may then beable to use various debugging tools that are useful with respect toblock diagrams, such as break points, single stepping, and executionhighlighting.

[0406] The user thus may be able to use the displayed block diagram as agraphical user interface for debugging the block diagram executing onthe remote device. The user can single step through the block diagramexecuting on the remote device using the block diagram GUI displayed onthe main computer system display. Also, as a block diagram executes on aremote device, the user may be able to view the block diagram on themain computer system, wherein the respective nodes in the block diagramdisplayed on the main computer system are highlighted as these nodesexecute on the remote device. The user may also be able to view the dataoutput from each of the respective nodes on the block diagram displayedon the main computer system 82 as the respective nodes produce dataexecuting on the remote device.

[0407] Viewing Front Panels of Graphical Programs

[0408] As mentioned above, the user can select an option on a programicon which represents a program having a corresponding user interface orfront panel, wherein this selected option enables the user to view theuser interface or front panel, either statically or dynamically duringexecution. Thus, where the user has a configuration diagram includingdevice nodes and/or program nodes representing programs distributedthroughout the system, the user may be able to select any program iconin the distributed system and view the corresponding user interface orfront panel of the program as it executes. This provides the user theability to view the status of execution of programs to put on any of thevarious devices present in the system.

[0409] Asynchronous Data Flow Node

[0410] In another embodiment, the user may be able to include anasynchronous data flow node or icon in two or more block diagrams orgraphical programs to allow distributed execution among the two or moreblock diagrams or graphical programs. An asynchronous data flow icon mayinclude two portions which comprise part of the same queue or memory.One portion of the asynchronous data flow icon may be a reader portionand the other portion may be a writer portion. The user may thendistribute the reader and writer portions with different devices ordifferent programs, e.g., using the association techniques describedabove. Thus, a writer portion of the asynchronous dataflow node in afirst block diagram may operate to write data to the queue, and a readerportion of a second different block diagram may operate to read datafrom this queue. These reads and writes may occur asynchronously to eachother. This allows a first block diagram to communicate data to a secondblock diagram, wherein the data may be communicated asynchronously withrespect to the second block diagram. This asynchronous data flow mayalso be configured for bi-directional communication, i.e., with readersand writers in both the first and second block diagrams or graphicalprograms. This asynchronous data flow may be particularly desirablebetween a computer system and a remote device.

[0411] Therefore, with simple graphical tools, the present system helpsa user select and manage a system, such as a measurement system (e.g., adata acquisition system) throughout its complete lifecycle. The toolsdescribed herein allow the user to select and order complete systems,including sensors, signal conditioning, data acquisition, industrialcomputers and software, (including machine vision, motion control,etc.). For example, the configuration diagram displayed on computer 82may be used by a user to aid in ordering devices or programs from anelectronic commerce site presented by server computer 90. The system mayalso operate to ensure that all components are compatible with eachother and that all required parts are order to enable the user to get upand running quickly.

[0412] The present system also may be used to help the user inconnecting his/her system together, providing cabling diagrams to helpunderstand how sensors, signal conditioning and data acquisitionhardware connect together. The present system helps avoid polarityproblems, ground current loops, and missing connections. The system mayeven assist with sensor excitation requirements. One embodiment of theinvention allows the user to design his/her own custom cablinginterfaces.

[0413] In one embodiment, the present system starts with the user'sgraphical system description and automatically configures easy-to-useDAQ Channel Names—with sensor scaling and unit information built in. Aconfiguration program, such as Measurement & Automation Explorer fromNational Instruments Corporation, can verify each of the input andoutput channels—in units or by reading raw voltages.

[0414] The present system may also operate to analyze thequality-of-measurement characteristics of configured devices to help theuser understand and document the overall measurement uncertainty in thesystem using industry-standard formulae and terminology. This informsthe user about the quality of the measurements.

[0415] As the user constructs a system, the graphical tools of thepresent system make it easy for the user to document the system—whetherthe documentation of the system is for the user, or intended to satisfythorough corporate or legislative standards. Asset data can be storedlocally or in a variety of SQL-compatible databases. The user may havecomplete control over the format of generated reports. A number oftemplates are included, such as calibration reports, and financial assetmanagement.

[0416] The present system may also simplify system maintenance. Thesystem may operate to remind the user when devices need to bere-calibrated. The system may even be configured to prevent the userfrom taking measurements with devices that have expired calibrationcertificates.

[0417] The present system may also aid the user in deploying systems asthe user moves from the R&D lab to the production floor. The networkdeployment tools of the present system make it easy to replicate systemconfiguration to one or many destination machines. The system mayoperate to update information about the physical assets connected toeach deployed machine—device serial numbers and calibration data, forexample. The system may also include configuration management tools thatverify that all changes to a system are recorded.

[0418] Therefore, the system offers a number of advantages to the user.The present system allows the user to create a graphical description(configuration diagram) of his/her physical system. The user may operateto select sensors, signal conditioning devices, data acquisitionhardware devices, measurement devices, automation devices, etc. for thesystem being developed.

[0419] Various other features of one embodiment of the invention are asfollows:

[0420] The system does not require hardware to operate.

[0421] The system creates custom DAQ Channels for the user's inputs andoutputs.

[0422] The system verifies that the configuration diagram elements orparts are compatible.

[0423] The system may assists with cabling.

[0424] The user can annotate his diagram with additional free-forminformation.

[0425] The system can examine hardware to further document his system.The system can, for example, query hardware for transducer electronicdata sheets (TEDS), calibration dates, serial numbers, etc. The user cansupply this same data manually.

[0426] The system creates/modifies scaling information for the DAQchannels based on the TEDS.

[0427] The system can help a user produce a virtual TEDS for his sensor.(Physical Metrology).

[0428] The user can generate reports displaying this data. The displayformats are user-definable, and the system ships with several exampletemplates.

[0429] The system can be used a pre-sales tool or an electronic commercetool, including specification and validation of customer orders

[0430] The system can help a user perform end-to-end calibration.

[0431] The system can help a user modify his documentation when a systemis deployed—e.g., re-detect hardware information, step the user throughphysical or end-to-end calibration, etc.

[0432] The system informs the user when calibration is due. The user canconfigure the system to produce warnings or fail to run entirely whencalibration is overdue.

[0433] The system can combine quality-of-measurement information fromthe sensors, conditioning and DAQ boards to produce an overall errorestimate. The system can assist users with expression of measurementuncertainty conforming to a variety of industry and governmentstandards.

[0434] The user can design custom cabling interfaces between DAQhardware and sensors.

[0435] The system handles measurement and automation propertymanagement. The system not only records calibration information, butalso can report on inventory, reliability data, financial records, etc.(Alternatively, the system can interoperate with third-party propertymanagement tools such as Fluke's MET/TRACK or MET/CAL.)

[0436] The system supports configuration management. The system at leastrecords all changes to the system, but perhaps also allows differentlevels of user access. The system may integrate with deployment tools sothat changes due to deployment are handled well.

FIGS. 37-44—Methods Related to the Creation and Use of ConfigurationDiagrams

[0437] FIGS. 37-44 flowchart various embodiments of methods for creatingand using diagrams, e.g., configuration diagrams, for performing variousfunctions on or for a system. It should be noted that in variousembodiments of the methods of FIGS. 37-44, some of the steps may beperformed in a different order than shown, or may be omitted. Additionalsteps may also be performed as desired. It is further contemplated thatvarious portions of the different methods described below may becombined.

[0438] Various embodiments of the invention may be implemented orperformed by a stand alone system. In other embodiments, the system maybe a client system, where, as used herein, the term “client system”refers to a system which communicates with another system, e.g., aserver computer system, to receive or use services provided by the othersystem, as is well known in the art. The embodiments described belowrelate to client/server embodiments of the invention, where the clientsystem and the server system each perform respective portions of themethod, although this is not intended to limit the invention to anyparticular form or functionality. In the embodiments described below,the client system may include a plurality of devices coupled together.In some embodiments, at least one of the devices includes, or isoperable to include, one or more programs.

[0439] It is noted that in different embodiments, the client system mayinclude devices and software related to various applications and fields,such as, for example, measurement, modeling/simulation, networkmanagement, control, and automation, among others, although theseexample applications and fields are exemplary only, and are not intendedto limit the application of the method or the types of client systems toany particular domains or fields. Similarly, the devices and programsincluded in the client system may be of any of a variety of types. Forexample, the devices may include one or more of analog devices, digitaldevices, processor-based devices, and programmable hardware elements,e.g., field programmable gate arrays (FPGAs), among others. Similarly,the programs included in the client system may be text-based programs,such as C, C++, Java, HTML, etc., graphical programs, such as LabVIEWgraphical programs, and/or hardware configuration programs, amongothers. For example, in an embodiment where at least one of theplurality of devices includes a field programmable gate array (FPGA), ahardware configuration program may be deployable on the FPGA to performa function, e.g., a measurement, control, automation, or modelingfunction, among others.

[0440] In one embodiment, the client system may comprise a rapid controlprototyping (RCP) system. As is known in the art, a goal of rapidcontrol prototyping is to enable new product prototypes to beimplemented and tested on real-time hardware, e.g., before the design ofthe product has been finalized and before the product has actually goneinto production. For example, according to the rapid control prototypingprocess, a control algorithm can be developed and deployed on a targetcontroller or target device. For example, the target device may includereal-time hardware that can execute the control algorithm, e.g., onconfigurable hardware such as an FPGA or DSP. The target device may bechosen to have characteristics similar to what the production devicewill have, e.g., in characteristics such as CPU, memory, I/O, etc.

[0441] The target controller or device that executes the controlalgorithm under test may be coupled to a real physical system, i.e., thephysical system that the production device will be used to control.Thus, the target device executing the control algorithm may behave muchthe same as if the production device were controlling the physicalsystem. However, the process of deploying a control algorithm on thetarget device may be performed significantly easier and more quicklythan if a production device were manufactured to test each version of acontrol algorithm under test. For example, the programming environmentused to create the control algorithm may provide support forautomatically deploying the algorithm on the target device. Thus, thedesign/test process may be a very tightly closed loop, allowing designsto be quickly and easily tested and significantly speeding up theproduct development process.

[0442] Another typical use of simulation is known as“hardware-in-the-loop” simulation. With hardware-in-the-loop simulation,a real product may be tested in conjunction with a simulated physicalsystem. For example, consider a control unit designed to control aphysical system. It may be impractical to test the control unit with thereal physical system the control unit is designed to control. Forexample, the tests may be too expensive, too dangerous, or impossible,e.g., the real physical system may not exist yet. Thus, it may bedesirable to couple the real control unit to a simulated physical systemto perform the tests. The simulation of the physical system may executeon real-time hardware so that the simulation closely approximates thereal system. As one example, consider a control unit designed to controlan automobile. It may be desirable to test how the control unit respondsin a crash situation. By performing a hardware-in-the-loop simulation,the crash situation can be simulated without actually crashing a realautomobile.

[0443] In one embodiment of a system for performing ahardware-in-the-loop simulation, a measurement/control program may beutilized to measure characteristics of the real product being tested,e.g., a real control unit, and/or to control operation of the realproduct. For example, the measurement/control program may be utilized togather information that can be analyzed to determine how well the realproduct under test is performing. Also, the measurement/control programmay be utilized to change operation parameters of the real product,e.g., to determine how this affects the operation of product under test.For further details regarding rapid control prototyping andhardware-in-the-loop techniques, please see U.S. patent application Ser.No. 10/046,868 titled “System and Method for Performing Rapid ControlPrototyping Using a Plurality of Graphical Programs that Share a SingleGraphical User Interface,” filed Jan. 15, 2002, and U.S. patentapplication Ser. No. 10/046,861 titled “System and Method for Performinga Hardware in the Loop Simulation Using a Plurality of GraphicalPrograms that Share a Single Graphical User Interface,” filed Jan. 15,2002, which were both incorporated by reference above.

[0444] In various embodiments of the methods described below, a diagram,e.g., a configuration diagram, may be created and/or used to specify,manage, configure, and/or represent a system, e.g., a client system. Thediagram may include device icons representing each of the plurality ofdevices in the system, link icons indicating coupling relationshipsbetween the plurality of devices, and program icons representing each ofthe one or more programs. In one embodiment, the diagram is aconfiguration diagram representing the hardware and softwareconfiguration of the system. Examples of configuration diagrams aredescribed above with reference to FIGS. 21A and 21B, although it isnoted that these configuration diagrams are exemplary only, and are notintended to limit the diagrams to any particular form, style, orfunctionality. In other embodiments, the configuration diagram mayrepresent a desired configuration of the client system. In other words,some or all of the products, i.e., devices and/or programs, representedin the configuration diagram may not currently be included in thesystem, but may instead comprise desired or proposed components of thesystem.

[0445] In one embodiment, the device icons in a configuration diagrammay each have an appearance to visually indicate a type of therespective device. In other words, each device icon may visually orgraphically indicate the type of device that the device icon represents.Similarly, program icons in the diagram may each have an appearance tovisually indicate a type of the respective program. As noted above, theconfiguration diagram may also include links between the device iconsindicating respective couplings between the devices in the clientsystem. In one embodiment, the link icons may each have an appearance tovisually indicate a type of the respective link between devices. Forexample, a link icon may visually indicate whether the link is a serial,parallel, digital, analog, and/or wireless link, among others, or mayindicate such characteristics as the signal or data type, e.g., powervs. data, direction of data flow, numbers of wires in the link,communication protocol, etc.

[0446] In one embodiment, the program icons may be visually displayedindicating an association with respective device icons representingrespective devices in which the programs are stored and/or executed. Forexample, the program icons may be visually displayed proximate torespective device icons representing respective devices in which theprograms are stored and/or executed. It should be noted that as usedherein, the term “proximate” refers to being on or near an item, e.g.,an icon, i.e., if a first icon is displayed proximate to a second icon,the first icon is sufficiently close to the second icon such that theuser would presume or understand an intended relationship between thetwo icons. Thus, a program icon may be located proximate to a deviceicon to represent the fact that the corresponding program is storedand/or executed on the corresponding device. In another embodiment, linkicons may be displayed coupling the program icons with the respectivedevice icons. Other graphical techniques associating the program iconswith the respective devices are also contemplated.

FIG. 37—Characterizing A Client System Over A Network

[0447]FIG. 37 flowcharts one embodiment of a method for characterizing aclient system over a network. More specifically, the flowchart describesa method for generating a diagram representing the hardware and softwareconfiguration of the client system. The embodiment of FIG. 37 ispreferably implemented in the system described above with reference toFIG. 1, where a client computer, e.g., the first computer system 82, iscoupled to a server computer system, e.g., the second computer system90, through a network 84 (or a computer bus).

[0448] As FIG. 37 shows, in 3702, electronic communication may beestablished between a server computer and a client system over anetwork, e.g., a LAN, WAN, the Internet, or any other transmissionmedium. For example, in one embodiment, a device in the client system,such as a client computer 82, may initiate a network session with theserver computer, e.g., by directing a web browser to a URL (UniversalResource Locator) of a website maintained on the server computer.Alternatively, the server computer 90 may initiate communications withthe client system, e.g., the client computer 82. It should be noted thatin various embodiments the communication between the server computer andthe client system may utilize any available communication protocols,e.g., TCP/IP, HTTP, Ethernet, 802.11, etc., as is well known in the art.Thus, through any of a variety of approaches, electronic communicationmay be established between the server computer and the client systemover a network.

[0449] As mentioned above, in a preferred embodiment, the client systemincludes a plurality of devices coupled together, where at least one ofthe devices includes one or more programs. Once communication isestablished between the server computer and the client system, then in3704, the server computer may programmatically determine informationregarding the plurality of devices and the one or more programs. Forexample, the server computer may programmatically analyze the clientsystem to determine the presence of one or more of the plurality ofdevices and the one or more programs. Thus, the determined informationmay comprise configuration information for the client system.

[0450] In one embodiment, the server computer may download an agent orprogram to the client system. The agent or program may then execute onthe client system, e.g., on a device of the client system, toprogrammatically determine the information regarding the plurality ofdevices and the one or more programs in the client system, and mayprovide the determined information to the server computer. In anotherembodiment, the server computer may access at least a portion of theinformation from at least one of the devices in the system. For example,the server computer (or the downloaded agent or program) mayprogrammatically determine the information by accessing plug and playinformation to determine the presence of the plurality of devices andthe one or more programs. As another example, programmaticallydetermining the information may include querying a configuration programresident on one of the devices in the system to determine the presenceof the devices and programs.

[0451] As noted above, in different embodiments, the client system mayinclude devices and software related to various applications and fields.Thus, for example, in an embodiment where the client system is ameasurement system, the plurality of devices may include one or moremeasurement devices which are each operable to perform a respectivemeasurement function. Similarly, the one or more programs may includeone or more measurement programs for performing measurement functions.Thus, the server computer programmatically determining informationregarding the plurality of devices and the one or more programs mayinclude programmatically determining a configuration of the one or moremeasurement devices and the one or more measurement programs in themeasurement system.

[0452] In an embodiment where the client system is a simulation ormodeling system, the plurality of devices may include one or moredevices which are each operable to perform a respective simulation ormodeling function, and the one or more programs may include one or moresimulation or modeling programs for simulating or modeling a process,device, and/or system. In this embodiment, the server computerprogrammatically determining information regarding the plurality ofdevices and the one or more programs may include programmaticallydetermining a configuration of the one or more devices and the one ormore programs in the simulation or modeling system.

[0453] As yet another example, in an embodiment where the client systemis an automation system, the plurality of devices may include one ormore devices which are each operable to perform a respective automationfunction, and the one or more programs may include one or moreautomation programs for automating a process, device, and/or system.Thus, in this embodiment, programmatically determining informationregarding the plurality of devices and the one or more programs mayinclude programmatically determining a configuration of the one or moreautomation devices and the one or more automation programs in theautomation system.

[0454] Similarly, in an embodiment where the client system is a networksystem, the plurality of devices may include one or more devices whichare each operable to perform a respective network function, e.g., anetwork management function, and the one or more programs may includeone or more network programs for managing a network, such as, forexample, configuring and/or managing hardware, such as switches,bridges, routers, hubs, network processors, etc., as well a networkmanagement programs, as described above in detail. For example, as alsonoted above, network functions may include, but are not limited to,network traffic logging and/or traffic analysis, e.g., data throughput,latency, topography, etc., as well as routing, testing, and so forth.Examples of network management products include NetView provided by IBMTivoli Software, BMC Software's Patrol, and SANPoint Control by VeritasSoftware Corporation, among others.as described in detail above. Thus,in this embodiment, programmatically determining information regardingthe plurality of devices and the one or more programs may includeprogrammatically determining a configuration of the one or more networkdevices and the one or more network programs in the network system.

[0455] In response to determining the information regarding the deviceand programs in the client system, the server computer mayprogrammatically generate a diagram which visually or graphicallyrepresents the system, as indicated in 3706. In other words, the diagrammay be a configuration diagram representing the hardware and softwareconfiguration of the client system. As described above, the diagram mayinclude device icons representing each of the plurality of devices, linkicons indicating coupling relationships between the plurality ofdevices, and program icons representing each of the one or moreprograms.

[0456] In an embodiment where the server computer downloads an agent orprogram(s) to the client system to determine the information regardingthe plurality of devices and the one or more programs in the clientsystem, rather than providing the information to the server computer andthe server computer generating the diagram as described above, the agentor program(s) may instead use the determined information to generate thediagram. In other words, the agent or program(s) may execute on (adevice of) the client system to generate the diagram based on thedetermined information.

[0457] Once the diagram has been generated, e.g., by the servercomputer, then in 3708, the server computer may transmit the diagram tothe client system. In an embodiment where the diagram is generated bysoftware executing on the client system, the diagram may instead betransmitted by the client system to the server computer, oralternatively, may not be transmitted at all.

[0458] Finally, in 3710, the diagram may be displayed, e.g., on adisplay device of the client system, e.g., for viewing by a user of theclient system. In different embodiments, the server computer may causethe diagram to be displayed on the display device of the client system,or the client system may initiate the display of the diagram. In oneembodiment, the configuration diagram may be stored in a memory mediumof the client system (or in a memory medium of the server computer),where the configuration diagram is usable for one or more of:documenting the client system configuration, modifying the client systemconfiguration, and adding/removing programs or devices to/from theclient system. In some embodiments, the diagram may also be usable indebugging the client system.

[0459] In one embodiment, a tree diagram which visually represents thesystem may be programmatically generated based on the programmaticallydetermined information, where the tree diagram displays a hierarchicalview of the plurality of devices and the one or more programs. The treediagram may also be displayed on the display. Thus, based on thedetermined information, a second or alternative view of the clientsystem may be generated and displayed. In one embodiment, any changesmade to one of the diagrams may automatically be reflected in the otherdiagram.

[0460] As noted above, in various embodiments, respective portions ofthe method may be performed by the client system and the server system.Thus, in various embodiments, the server computer may perform at leastone of the programmatically determining information and theprogrammatically generating the diagram, and/or the client computer mayperform at least one of the programmatically determining information andthe programmatically generating the diagram. Alternatively, either orboth of the client system and the server system may perform at least aportion of the programmatically determining information and theprogrammatically generating the diagram.

[0461] For example, in one embodiment, where the system includes a firstcomputer system, and where a server computer is coupled to the systemover a network, the first computer system may programmatically determinethe information, e.g., based on Plug and Play information, by performinga discovery process on the system, etc. Electronic communication betweenthe server computer and the system may be established over a network,and the server computer may programmatically generate the diagram basedon the programmatically determined information. For example, the serversystem may query the first computer system for the information, thengenerate the diagram based on the information, or the first computersystem may proactively send the information to the server and requestthe diagram, in response to which the server system may generate thediagram.

[0462] Alternatively, the server computer may programmatically determinethe information, and the first computer system may programmaticallygenerate the diagram based on the programmatically determinedinformation. For example, as described above, the server computer mayprogrammatically determine the information in a variety of ways, e.g.,by downloading an agent or program to the client system, by querying theclient system, etc. The server system may then provide the informationto the client system, and the client system may generate the diagrambased on the information. In one embodiment, the client system maygenerate the diagram using software downloaded from the server system.Thus, in various embodiments, the client system and the server systemmay cooperatively implement the method described above.

[0463] In one embodiment, subsequent changes in the client systemconfiguration may automatically be reflected in the diagram. Forexample, after displaying the diagram a first program may be deployed onthe client system. The method may then display a first program icon inthe diagram, where the first program icon corresponds to the firstprogram. Thus, in one embodiment, the diagram may automatically beupdated when the hardware and/or software configuration of the clientsystem changes.

[0464] In some embodiments, the diagram may be used to change theconfiguration of the client system. For example, user input may bereceived graphically associating a first program icon with a firstdevice icon, where graphically associating operates to deploy a firstprogram corresponding to the first program icon with a first devicecorresponding to the first device icon. In one embodiment, the user maydrag the first program icon onto the first device icon, therebyinitiating deployment of the first program onto the first device. Otherapproaches for associating the program icon with the device icon arealso contemplated. For example, the user may invoke a pop-up menu, e.g.,by right-clicking on the device icon or the program icon. The menu maythen receive user input specifying the program for deployment on thedevice, or alternatively, specifying the device as a target fordeployment of the program. As yet another example, the user may use apointing device to draw a line from the program icon to the device icon,indicating the desired deployment. Thus, if the user determines that theconfiguration diagram is incomplete or otherwise in need ofmodifications, the method may included receiving user input, e.g.,adding (or removing) icons, indicating additional hardware and/orsoftware to add to (or remove from) the system represented by thediagram. In other words, the user may manually specify additionalhardware and/or software or removal of hardware and/or software for thesystem configuration.

[0465] In one embodiment, the deployment of the program onto the devicemay be animated. In other words, the diagram or a program associatedwith the diagram, may animate the deployment of the first program ontothe device. It is noted that any of a variety of animation techniquesmay be used to perform the animation. For example, animating thedeployment of the program may include moving the first program icon to alocation in the diagram proximate to the first device icon as theprogram is deployed. As another example, one or more moving arrows maybe displayed moving from the program icon to the device icon. Of course,once the deployment is complete, the animation may be stopped. Furtherinformation regarding animation of program deployment is provided belowwith reference to FIG. 38.

FIG. 38—Animating Deployment of a Program in a System

[0466]FIG. 38 flowcharts one embodiment of a method for animatingdeployment of a program in a system, e.g., in a client system. Morespecifically, the flowchart describes a method for animating programdeployment using a configuration diagram representing the hardware andsoftware configuration of the client system. The embodiment of FIG. 38may be implemented on computer system 82, or may be implemented in thesystem described above with reference to FIG. 1, where the clientcomputer, e.g., the first computer system 82, is coupled to a servercomputer system, e.g., the second computer system 90, through a network84 (or a computer bus).

[0467] In a preferred embodiment, the client system includes a pluralityof devices coupled together, where at least one of the devices includesone or more programs. As noted above, in different embodiments theclient system may include devices and software related to variousapplications and fields. For example, in various embodiments, the clientsystem may be a measurement system, where the plurality of devicesinclude one or more measurement devices which are each operable toperform a respective measurement function, or, the client system may bea simulation (e.g., modeling) system, where the plurality of devicesinclude one or more devices which are each operable to perform arespective simulation function, and where the one or more programsinclude one or more simulation programs for simulating a process,device, and/or system. In yet another embodiment, the client system maybe an automation system, where the plurality of devices include one ormore devices which are each operable to perform a respective automationfunction, and where the one or more programs include one or moreautomation programs for automating a process, device, and/or system. Ina further embodiment, the client system may be a network system, wherethe plurality of devices include one or more devices which are eachoperable to perform a respective network function, and where the one ormore programs include one or more network programs for managing anetwork. Of course, other applications and/or fields of use are alsocontemplated, the examples given being exemplary only.

[0468] As FIG. 38 shows, in 3802, a configuration diagram may bedisplayed, e.g., on a display device of the client system, where theconfiguration diagram represents the devices in the client system. Asdescribed in detail above, the diagram may include device iconsrepresenting each of the plurality of devices, link icons indicatingcoupling relationships between the plurality of devices, and programicons representing each of the one or more programs.

[0469] Once the diagram has been displayed, then in 3804, a firstprogram may be deployed to the first device in the client system. Forexample, in one embodiment, the user may initiate deployment of theprogram onto the first device, e.g., user input may be receivedgraphically associating a first program icon with a first device icon,where graphically associating operates to deploy a first programcorresponding to the first program icon with a first devicecorresponding to the first device icon. In one embodiment, the user maydrag the first program icon onto the first device icon, therebyinitiating deployment of the first program onto the first device. Otherapproaches for associating the program icon with the device icon arealso contemplated. For example, the user may invoke a pop-up menu, e.g.,by right-clicking on the device icon or the program icon. The menu maythen receive user input specifying the program for deployment on thedevice, or alternatively, specifying the device as a target fordeployment of the program. As yet another example, the user may use apointing device to draw a line from the program icon to the device icon,indicating the desired deployment. In other embodiments, the user mayinitiated deployment of the program by various other means, as is wellknown in the art, such as, for example, by double-clicking on theprogram icon, by entering text commands on a command line, etc.

[0470] In other embodiments, the deployment of the first program ontothe first device may be performed programmatically, e.g., automatically.For example, in one embodiment, the program may be deployedautomatically in response to installation of the first device in theclient system. In other words, the user may install or connect the firstdevice in the client system, and the program may be programmaticallydeployed, i.e., without user input specifying the deployment, inresponse to the installation. For example, the first device may beinstalled in the system, the presence of the first device may beprogrammatically detected, and the program may be programmaticallydeployed in response to said programmatically detecting presence of thefirst device.

[0471] In another embodiment, the program may be deployed automaticallyin response to the user purchasing the program, e.g., over the network,e.g., over the Internet. In other words, the user may access a secondcomputer system, e.g., an e-commerce server, over the network, place anorder for the program, optionally providing payment information, and theserver may download or deploy the program onto the client system, e.g.,a first computer system, automatically. The communication between theserver computer and the client system may utilize any availablecommunication protocols, e.g., TCP/IP, HTTP, Ethernet, 802.11, etc., asis well known in the art. Thus, in one embodiment, the deployment of theprogram onto the first device may be performed by a second computersystem coupled to the first computer system.

[0472] In 3806, the deployment of the program onto the device may beanimated. In other words, the diagram or a program associated with thediagram, may animate the deployment of the first program onto the firstdevice. It is noted that any of a variety of animation techniques may beused to perform the animation. For example, animating the deployment ofthe program may include moving the first program icon to a location inthe diagram proximate to the first device icon as the program isdeployed. In other words, the method may display propagation of a firstprogram icon on the display from a first location on the display to thefirst device icon, wherein the first program icon corresponds to thefirst program, and where displaying propagation visually indicates thatthe first program is being deployed on the first device. As anotherexample, the method may display propagation of one or more icons fromthe first program icon on the display to the first device icon tovisually indicate that the first program is being deployed onto thefirst device, e.g., one or more moving arrows may be displayed movingfrom the program icon to the device icon. Of course, once the deploymentis complete, the animation may be stopped.

[0473] It should be noted that the animation may be presented ordisplayed whether the program is deployed manually or programmatically.In a preferred embodiment, the animation of the deployment is displayedsubstantially concurrently with the deployment. For example, when aprogram is automatically deployed to a device, the configuration diagrammay be animated to visually indicate to the user the deploymentoperation that is occurring. In one embodiment, the configurationdiagram includes a second device icon corresponding to a second device,where the second device initially stores the first program. In thisembodiment, the method may display propagation of the first program iconon the display from the second device icon to the first device icon. Forexample, when a program is automatically deployed from a computersystem, e.g., the client computer system or a server computer, to thefirst device, the corresponding program icon may be animated on theconfiguration diagram to “flow” from the computer system device icon tothe first device icon corresponding to the first device.

[0474] In an embodiment where the configuration diagram includes linksinterconnecting various ones of the plurality of device iconsrepresenting respective couplings between devices corresponding to thedevice icons, displaying propagation may include displaying propagationof the first program icon on the display on a link connecting the seconddevice icon and the first device icon, i.e., the animation may reflectthe particular coupling or transmission medium used to deploy theprogram to the device.

[0475] As noted above with reference to FIG. 37, in one embodiment, atree diagram may be displayed on the display of the first computersystem, where the tree diagram displays a hierarchical representation ofthe plurality of devices. In one embodiment, the tree diagram may alsobe animated to visually indicate the deploying.

[0476] Thus, in various embodiments, the deployment of a program onto adevice in a client system may be animated in a configuration diagramrepresenting the system.

FIG. 39—Receiving Purchase Information for a Client System

[0477]FIG. 39 flowcharts one embodiment of a method for receivingpurchase information for a client system, e.g., a measurement system.More specifically, the flowchart describes a method for using aconfiguration diagram representing the hardware and softwareconfiguration of the client system to receive purchase informationregarding products for use in the client system. The embodiment of FIG.39 may be implemented in the system described above with reference toFIG. 1, where the client system, e.g., a client computer, e.g., thefirst computer system 82, is coupled to a server computer system, e.g.,the second computer system 90, through a network 84 (or a computer bus).

[0478] In a preferred embodiment, the client system includes a pluralityof devices coupled together. In one embodiment, at least one of thedevices may include one or more programs. As noted above, in differentembodiments the client system may include devices and software relatedto various applications and fields, including, for example, the fieldsof measurement, modeling, networks, and automation, among others.

[0479] As FIG. 39 shows, in 3902, a configuration diagram may bedisplayed, e.g., on a display device of the client system, where theconfiguration diagram represents a plurality of products, e.g., devicesand/or programs, in the client system. In other words, the configurationdiagram may represent the current configuration of the client system. Asdescribed above, in one embodiment, the diagram may include device iconsrepresenting each of the plurality of devices, link icons indicatingcoupling relationships between the plurality of devices, and programicons representing any programs currently stored or installed in theclient system. More specifically, the configuration diagram may includea first device icon representing a first device in the client system.Examples of configuration diagrams are described above with reference toFIGS. 21A and 21B, although it is noted that these configurationdiagrams are exemplary only, and are not intended to limit the diagramsto any particular form, style, or functionality. In some embodiments,the configuration diagram may also be displayed on a display device ofthe server computer system, if desired.

[0480] In one embodiment, a tree diagram which visually represents thesystem may be displayed, where the tree diagram displays a hierarchicalview of the plurality of products, e.g., devices and programs. The treediagram may also be displayed on the display. Thus, a second oralternative view of the client system may be displayed. In oneembodiment, any changes made to one of the diagrams (the configurationdiagram or the tree diagram) may automatically be reflected in the otherdiagram.

[0481] In one embodiment, the server computer may download an agent orprogram to the client system, which may then execute on the clientsystem, e.g., on a device of the client system, to programmaticallydetermine the information regarding the plurality of devices and the oneor more programs in the client system. The agent or program may thenprovide the determined information to the server computer. In anotherembodiment, the server computer may access at least a portion of theinformation from at least one of the devices in the system. For example,the server computer (or the downloaded agent or program) mayprogrammatically determine the information by accessing plug and playinformation to determine the presence of the plurality of devices andthe one or more programs. As another example, programmaticallydetermining the information may include querying a configuration programresident on one of the devices in the system to determine the presenceof the devices and programs.

[0482] In 3904, a plurality of product icons may be displayedrepresenting products available for use in the client system. Theproducts may include hardware devices and/or programs. For example, inan embodiment where the client system is a measurement system, theproduct icons may correspond to various measurement devices and/ormeasurement programs that may be added to or installed in the clientsystem. The plurality of product icons may be displayed in a palette,e.g., in a graphical user interface (GUI) window, in a menu, a dialogbox, etc., as is well known in the art.

[0483] In one embodiment, the particular product icons displayed may bedependent upon the configuration diagram or information related to theconfiguration diagram. In other words, the product icons displayed maybe based on the current configuration of the client system. For example,the displayed product icons may correspond to devices and/or programsthat are compatible with those devices and/or programs represented inthe configuration diagram. Thus, in this embodiment, the method mayinclude programmatically analyzing the current configuration diagram,selecting product icons for display based on the analysis, anddisplaying the selected product icons.

[0484] In one embodiment, information related to the products may bedisplayed with, or accessible through, the displayed product icons, suchas, for example, a brief description, pricing, and/or availability ofeach product. For example, right-clicking on a product icon may invoke apop-up dialog box displaying the information for that product, or“hovering” the cursor over the icon may invoke display of theinformation.

[0485] Once the product icons have been displayed, then in 3906, userinput graphically associating at least one first product icon with theconfiguration diagram may be received, where the first product iconrepresents a first product. The user input may indicate a desire topurchase the first product. The graphical association between the atleast one first product icon and the configuration diagram may beperformed in a variety of ways. For example, the user input maygraphically associate the at least one first product icon with a firstlocation in the configuration diagram, e.g., using “drag and drop”techniques, as is well known in the art. The first location in theconfiguration diagram may simply be a blank area within the borders,e.g., the frame, of the configuration diagram, or may correspond to adisplayed element, e.g., an icon, in the diagram. For example, the userinput may graphically associate the at least one first product iconproximate to a link icon in the configuration diagram, indicating acoupling between the first product icon and an icon in the diagramalready associated with the link.

[0486] More generally, receiving user input graphically associating theat least one first product icon with the configuration diagram mayinclude receiving user input graphically associating the at least onefirst product icon with a first location in the configuration diagram,and receiving user input graphically coupling the at least one firstproduct icon with a second icon in the configuration diagram, where thecoupling indicates an intended relationship between the first productand a component of the client system corresponding to the second icon.Thus, for example, the user may drag and drop a program icon from thepalette onto or proximate to a device icon in the configuration diagram,thereby indicating that the program is to be stored and/or executed onthe device corresponding to the device icon. In one embodiment, aftersaid graphically associating, the at least one first product icon may bemodified to reflect the association. For example, the color of the iconmay be changed to indicate that the product (icon) has been selected. Asanother example, the icon's appearance may be modified to indicate theparticular relationship implied by the association, e.g., usingdifferent colors to indicate whether the corresponding product is a datasource or target, and so on.

[0487] In one embodiment, type checking may be performed regarding theintended relationship between the first product and the component of themeasurement system corresponding to the second icon. For example, if theprogram icon were dragged to a location proximate to the device icon,the method may programmatically, i.e., automatically, analyze theindicated relationship, e.g., that the program is to be stored and/orexecuted on the device, and determine whether such a relationship isfeasible. If the program should not or cannot be stored or executed onthe device, then an error message (or graphical equivalent) to thateffect may be presented to the user. As another example, if an iconrepresenting a PCI device were associated with a link icon which in turnwas coupled to a device icon representing a USB device, then a messageor icon may be presented to the user indicating the incompatibilitybetween USB and PCI.

[0488] In one embodiment, the message may also include suggestions as tohow to resolve the issue. For example, the message may suggest that abridge device or converter be inserted between the USB device and thePCI device to facilitate communication between the otherwiseincompatible devices. If not already included in the displayed producticons (e.g., in the palette), then an icon representing the suggestedconverter device may be added to the palette. Thus, in one embodiment,in response to receiving the user input indicating a desiredrelationship, second product icons may be displayed representing secondproducts available for use in the client system, where the secondproducts are related to the first product. More generally, wheregraphically associating the at least one first product icon with theconfiguration diagram includes indicating a selection of the firstproduct from the plurality of products, the method may automaticallydisplay a second plurality of product icons representing second productsavailable for use in the measurement system based on one or more pastselections. In this way, the method may successively refine thepresentation of product options to the user as the user providessuccessive selection information. Similarly, if the user modifies theconfiguration diagram, e.g., changes the connectivity among the diagramelements or removes an element from the configuration, the method maymodify the displayed product icons in accordance with the newconfiguration.

[0489] Once the user input has been received graphically associating theat least one first product icon with the configuration diagram, then asindicated in 3908, an updated configuration diagram may be displayedthat represents the configuration of the measurement system after theuser input has been received, where the updated configuration diagramincludes the at least one first product icon. In other words, after, orin response to, receiving the user input, the configuration diagram maybe modified to include the at least one first product icon and displayedon the client system display device. For example, in the embodimentdescribed above where user input was received graphically associatingthe at least one first product icon proximate to a link icon in theconfiguration diagram, displaying the updated configuration diagram mayinclude displaying the at least one first product icon connected to thelink icon.

[0490] In one embodiment, once the user has provided user inputselecting the first product icon for inclusion in the configuration,e.g., by graphically associating the first product icon with theconfiguration diagram, pricing information for the first product mayoptionally be displayed, as indicated by 3910 of FIG. 39. In the casethat the user input graphically associates a plurality of product iconswith the configuration diagram, where each of the plurality of producticons represents a respective product, accumulated prices of therespective products may be displayed as each product icon is graphicallyassociated with the configuration diagram. For example, the user mayselect the first product icon, thereby invoking display of pricinginformation for the first product, then the user may select a secondproduct icon representing a second product, thereby invoking display ofpricing information for the second product. The method may then displaycumulative pricing information for the two products together, i.e., maydisplay a total price for the cumulative selected products.

[0491] In various embodiments, displaying pricing information mayinclude displaying a total price for all of the products on the diagram,displaying pricing information for each of the proposed products on thediagram, displaying an unpaid balance for the cost of the proposedproducts on the diagram, and/or displaying a total cost for the proposedproducts on the diagram.

[0492] In response to displaying the pricing information, user input maybe received initiating purchase of the first product. For example, theuser may select an option from a menu or a pop-up dialog box indicatingpurchase of the selected products, and then may provide paymentinformation such as a billing account or credit card number. In responseto receiving user input initiating purchase of the first product, thefirst product may be provided to the user. For example, if the productis a program, the program may be downloaded from the server computer 90(or another server coupled to the network), or delivered via any othermeans as desired. In this embodiment, the user may drag and drop theprogram icon onto a device icon in the configuration diagram to invokedeployment of the program onto the device corresponding to the deviceicon. For more detailed information regarding deployment of programsusing a configuration diagram, please see U.S. patent application Ser.No. 10/113,067, titled “Graphically Deploying Programs on Devices in aSystem”, filed Apr. 01, 2002, and U.S. patent application Ser. No.10/123,511 titled “Graphical Association of Program Icons,” filed Apr.16, 2002, which were incorporated by reference above. If the product isa hardware device, the device may be delivered via standard deliverymeans, e.g., by mail.

[0493] Thus, according to various embodiments of the invention, the usercan log onto a server and view a palette of icons representing productssuch as hardware devices or programs. The user can drag and drophardware device icons from the server palette onto a configurationdiagram displayed on the client system. This may indicate that the userdesires to purchase these products. The user can also drag and drop inprogram icons from the server palette onto the configuration diagram todeploy programs from the server onto devices in the client system.

FIG. 40—Specifying Products for a Client System

[0494]FIG. 40 flowcharts one embodiment of a method for specifyingproducts for a client system, e.g., a measurement system. Morespecifically, the flowchart describes a method for using a configurationdiagram, representing a current and/or desired hardware and/or softwareconfiguration of the client system, to specify products for use in theclient system. The embodiment of FIG. 40 may be implemented in thesystem described above with reference to FIG. 1, where the clientsystem, e.g., a client computer, e.g., the first computer system 82, iscoupled to a server computer system, e.g., the second computer system90, through a network 84 (or a computer bus).

[0495] As FIG. 40 shows, in 4002, a configuration diagram may bereceived, e.g., from a client system, where the configuration diagramrepresents a desired configuration of the client system, including, forexample, a plurality of hardware devices and/or programs. As describedabove, the diagram may include device icons representing each of theplurality of devices, link icons indicating coupling relationshipsbetween the plurality of devices, and program icons representing anyprograms currently stored or installed in the client system. As alsodescribed above, in various embodiments, the client system may be one ormore of a test and measurement system, a modeling or simulation system,an automation system, a network system, etc., among others. In oneembodiment, the client system may comprise a rapid control prototyping(RCP) system, as described above.

[0496] It should be noted that the configuration diagram may be receivedin a variety of different ways. For example, in one embodiment,electronic communication may be established between the server computer90 and the client system 82 over the network, e.g., a LAN, WAN, theInternet, or any other transmission medium. For example, in oneembodiment, a device in the client system, such as a client computer 82,may initiate a network session with the server computer, e.g., bydirecting a web browser to a URL (Universal Resource Locator) of awebsite maintained on the server computer. Alternatively, the servercomputer 90 may initiate communications with the client system, e.g.,the client computer 82. It should be noted that in various embodimentsthe communication between the server computer and the client system mayutilize any available communication protocols, e.g., TCP/IP, HTTP,Ethernet, 802.11, etc., as is well known in the art.

[0497] In various embodiments, the configuration diagram may be createdin a number of different ways. For example, a user of the client systemmay manually generate the configuration diagram, e.g., using a softwareprogram executing on the client computer 82, by dragging and droppingvarious icons representing devices, programs, and/or links onto thediagram, and/or by drawing the diagram. As another example, a currentconfiguration of the client system may be determined, and an initialconfiguration diagram representing the current configuration of theclient system generated or retrieved from a database. The user may thenmodify the initial configuration diagram to produce the configurationdiagram representing the desired configuration of the client system andprovide the desired configuration diagram to the server computer 90 overthe network 84.

[0498] In one embodiment, the current configuration of the client systemmay be determined programmatically, i.e., automatically. For example, inone embodiment, the current configuration of the client system may bedetermined by the server computer over the network, e.g., the servercomputer may access the client system over the network, determine thecurrent configuration of the client system, generate the initialconfiguration diagram, and provide the diagram to the user over thenetwork. In another embodiment, the current configuration of the clientsystem may be determined by software executing on the client system,e.g., the client computer 82. In one embodiment, the software fordetermining the current configuration of the client system may bedownloaded to the client computer from the server computer over thenetwork, then executed on the client computer. Thus, the currentconfiguration of the client system may be determined by programmaticallyanalyzing the client system to determine devices and/or programscurrently in the system.

[0499] Once the configuration diagram has been received, e.g., by theserver computer 90, then in 404 the server computer 90 mayprogrammatically analyze the configuration diagram to determineinformation regarding a plurality of products, e.g., at least onehardware device and at least one program. For example, the servercomputer 90, e.g., software executing on the server computer, mayprogrammatically analyze the client system to determine pricinginformation for the devices and/or programs represented in theconfiguration diagram. In one embodiment, the configuration diagram mayinclude information indicating which, if any, of the components orproducts represented in the configuration diagram are already includedin the client system 82. For example, the icons representing the variousdevices and/or programs may be labeled or color-coded to indicate theirrespective presence (or not) in the actual client system. The servercomputer 90 may then determine pricing information for those componentsor products represented in the diagram which are not currently includedin the client system, e.g., as proposed products for the system. Itshould be noted that in different embodiments, other information relatedto the products, such as availability, model numbers, descriptions,estimated delivery times, etc., may also be determined and optionallydisplayed.

[0500] In 4006 after the pricing information has been determined for theproposed products, the pricing information may be provided to the user,e.g., over the network. The pricing information (and possibly additionalinformation) may be provided to the user in a variety of differentforms, including text-based and/or graphical information, among others.For example, in one embodiment, the configuration diagram may bemodified to include the pricing information, and the modifiedconfiguration diagram provided to the user.

[0501] In various embodiments, displaying pricing information mayinclude displaying a total price for all of the products on the diagram,displaying pricing information for each of the proposed products on thediagram, displaying an unpaid balance for the cost of the proposedproducts on the diagram, and/or displaying a total cost for the proposedproducts on the diagram.

[0502] Once the pricing information has been provided to the user, thenin 4008, user input specifying purchase of at least one of the proposedproducts may optionally be received, and the purchased products may beprovided to the user in response, as indicated in 4010. For example, theuser may specify purchase of the products by dragging and dropping iconsfrom a palette to the configuration diagram, or, in an embodiment wherethe products are represented by icons in the (modified) configurationdiagram, the user may right-click on a respective icon, thereby invokinga menu or pop-up dialog box that displays purchase options for thecorresponding product, e.g., payment methods, etc. The user may select adesired purchase option and may be prompted for additional paymentinformation, such as a billing account or credit card number, which maythen be entered and provided to the server computer over the network.

[0503] In one embodiment, the user may select products for purchase bymodifying the configuration diagram and providing the modified diagramback to the server. For example, the user may mark at least a subset ofthe displayed product icons to indicate purchase of the correspondingproducts, e.g., by right-clicking on each product icon and selecting anoption from a pop-up menu indicating a desire to purchase thecorresponding product. In one embodiment, payment information may alsobe entered, as described above. In response to the selected option, theselected product icon may be modified to indicate the purchase, e.g., bya color change, etc. The configuration diagram may then be provided tothe server where it may be programmatically analyzed to determine theproducts marked for purchase by the user. In another embodiment, oncethe user has selected the products for purchase using the configurationdiagram, information indicating the purchase may be provided to theserver without the configuration diagram, i.e., just the purchaseinformation may be provided.

[0504] In one embodiment, the user may select a plurality of productsfor purchase, e.g., from the configuration diagram or from a palette ofavailable or proposed products. As the user selects products forpurchase, accumulated prices of the respective products may be displayedas each product icon is selected. For example, the user may select afirst product icon, thereby invoking display of pricing informationand/or purchase options for a first product, then the user may select asecond product icon representing a second product, thereby invokingdisplay of pricing information and/or purchase options for the secondproduct. The method may then display cumulative pricing information forthe two products together, i.e., may display a total price for thecumulative selected products. The cumulative price may be updated witheach product purchase selection until the user indicates completion ofthe selection process, e.g., by selecting a payment method, finalizingthe purchase, etc.

[0505] In response to receiving user input indicating or initiatingpurchase of the product(s), the product(s) may be provided to the user,as indicated above. For example, if the product is a program, theprogram may be downloaded from the server computer 90 (or another servercoupled to the network), or delivered via any other means as desired. Inthis case, the user may drag and drop the program icon onto a deviceicon in the configuration diagram to invoke deployment of the programonto the device corresponding to the device icon. For more detailedinformation regarding deployment of programs using a configurationdiagram, please see U.S. patent application Ser. No. 10/113,067, titled“Graphically Deploying Programs on Devices in a System”, filed Apr. 01,2002, and U.S. patent application Ser. No. 10/123,511 titled “GraphicalAssociation of Program Icons,” filed Apr. 16, 2002, which wereincorporated by reference above. If the product is a hardware device,the device may be delivered via standard delivery means, e.g., by mailor other delivery means.

[0506] In one embodiment, in response to receiving the configurationdiagram, the server computer may programmatically analyze the diagramand propose one or more products for inclusion in the client system. Forexample, the method may include programmatically analyzing theconfiguration diagram to perform type checking among components, e.g.,devices and/or programs, represented in the configuration diagram. Inresponse to the analysis type checking information may be generated andprovided to the user. As described above, type checking may includeanalyzing the relationships between components represented in theconfiguration diagram to determine the validity or appropriateness ofthe relationships, or to determine alternatives to the expressedrelationships. For example, in one embodiment, type checking amongcomponents represented in the configuration diagram may includedetermining one or more incompatibilities and/or omissions among thecomponents, where the type checking information includes informationdescribing the determined one or more incompatibilities and/oromissions.

[0507] In one embodiment, the type checking information may also includeproposed changes to the configuration of the measurement system toresolve the determined incompatibilities and/or omissions. For example,as described above with reference to FIG. 39, if an icon representing aPCI device were associated with a link icon which in turn was coupled toa device icon representing a USB device, then the type checkinginformation may indicate the incompatibility between USB and PCI, andthe method may, for example, propose that a bridge device or converterbe inserted between the USB device and the PCI device to facilitatecommunication between the otherwise incompatible devices. The proposedproduct(s), along with pricing information, may be included in the typechecking information provided to the user, e.g., the client system.

[0508] In one embodiment, the type checking information may be providedto the user by modifying the configuration diagram to include the typechecking information, and providing the modified configuration diagramto the user. For example, if the method determines that a needed productis omitted from the configuration, e.g., the converter above, thenmodifying the configuration diagram to include the type checkinginformation may include adding one or more icons to the configurationdiagram representing one or more proposed products, e.g., the converterand associated links, for use in the measurement system. Thus, if notalready included in the displayed product icons (e.g., in theconfiguration diagram), then icons representing the suggested converterdevice and links may be added to the diagram.

[0509] As another example, the method may programmatically analyze theconfiguration diagram and determine that one or more of the componentsrepresented in the configuration diagram could be changed or replaced toprovide an improved solution or configuration for the client system. Forexample, alternate couplings between components or alternative devicesmay be proposed. Thus, in one embodiment, in response to analyzing theconfiguration diagram, product icons may be displayed representingproducts available for use in the client system, where the products areproposed to augment or replace components in the current configurationof the client system. In one embodiment, the icons representing theproposed products may replace the icons representing the componentsproposed to be replaced. In another embodiment, the icons representingthe proposed replacement products may be added to the configurationdiagram, where textual or graphical means are used to indicate theproposed replacements. For example, a proposed replacement link may bepresented in one color or line style (e.g., a dashed line), while the“replaced” link may be presented in a different color or line style.

[0510] Thus, a configuration diagram may be used to specify products,including hardware devices and/or programs, for inclusion in a clientsystem, e.g., a measurement system. Additionally, the configurationdiagram may be used to specify and/or communicate product information,such as pricing information and/or proposed products, related to theclient system.

FIG. 41—Generating a Configuration Diagram Based on User Specificationof a Task

[0511]FIG. 41 flowcharts one embodiment of a method for generating aconfiguration diagram for a client system, e.g., a measurement system,based on user specification of a task, e.g., a measurement task. Theembodiment of FIG. 41 may be implemented in the system described abovewith reference to FIG. 1, where the client system, e.g., a clientcomputer, e.g., the first computer system 82, is coupled to a servercomputer system, e.g., the second computer system 90, through a network84 (or a computer bus). As noted above, in various embodiments, theclient system may be one or more of a test and measurement system, amodeling or simulation system, a network system, and an automationsystem, among others. In one embodiment, the client system may comprisea rapid control prototyping (RCP) system, as also mentioned above. Itshould be noted that although the method presented in FIG. 41 isdescribed in terms of a measurement system for performing a measurementtask, this domain of application is meant to be exemplary only, and isnot intended to limit the application and use of the present inventionto any particular field or domain.

[0512] As FIG. 41 shows, in 4102, one or more requirements may bereceived, e.g., from the client system, specifying a task to beperformed by the client system, such as a measurement task. In apreferred embodiment, the one or more requirements may be provided inresponse to input from a user. For example, the user may provide userinput to the client computer system 82 indicating the one or morerequirements for the measurement task, and the client computer system82, in response to the user input, may send the one or more requirementsto server computer system 90.

[0513] The user input (requirements) may include domain specific userinput. For example, in a measurement application, the user input may bemeasurement specific user input. The measurement specific user input orrequirements may include, but is not limited to, one or more of ameasurement function (i.e., instrument) type, such as an oscilloscopefunction, multimeter function, DAQ function, machine vision function,image processing function, motion control function, process controlfunction, simulation function, automation function, plant controlfunction, or measurement analysis function; sampling rate; gain;measurement type, such as voltage, resistance, temperature, current,pressure, photonic intensity, frequency, etc.

[0514] In one embodiment, the one or more requirements may comprise atask specification, e.g., a measurement task specification. In anotherembodiment, the measurement task specification may be determined basedon the one or more requirements. For example, software executing on theserver computer system 90 may receive the one or more requirements fromthe client computer system 82 over the network, and may programmaticallydetermine the measurement task specification based on the receivedrequirements. As another example, software executing on the clientcomputer system 82 may determine or generate the measurement taskspecification based on the requirements. Thus, in various embodiments,the one or more requirements for the measurement task may include, ormay be used to generate, the measurement task specification. For furtherdiscussion of the generation of a measurement task specification fromuser provided requirements, please see U.S. patent application Ser. No.10/008,792 titled “Measurement System Software Architecture for EasilyCreating High-Performance Measurement Applications,” filed Nov. 13,2001, and U.S. patent application Ser. No. 10/120,257 titled“Network-based System for Configuring a Measurement System usingConfiguration Information Generated based on a User Specification,”filed Apr. 10, 2002, both of which were incorporated by reference above.

[0515] In response to receiving the one or more requirements (and/or thetask specification), then in 4104, a plurality of measurement productsmay be determined, where the plurality of measurement products areoperable to perform the measurement task, optionally in conjunction withthe client computer system and/or other devices or programs included inthe measurement system. The plurality of measurement products mayinclude at least one measurement device and/or at least one softwareproduct, e.g., a measurement program. In a one embodiment, softwareexecuting on the server computer system 90 may programmatically analyzethe one or more requirements to determine the plurality of measurementproducts. In an embodiment where a measurement task specification wasdetermined based on the one or more requirements, e.g., by the clientcomputer 82 or the server computer system 90, the one or moremeasurement products may be determined by programmatically analyzing themeasurement task specification. For example, if the requirement and/ortask specification indicate that a temperature is to be measured andrepresented as a voltage, then the method may propose a voltage-basedtemperature sensor coupled to a data acquisition (DAQ) device, and mayalso propose additional items, such as a signal conditioner or suitabletransmission medium.

[0516] In one embodiment, determining the plurality of measurementproducts may include determining a current configuration of themeasurement system. In this embodiment, the plurality of measurementproducts may be determined by programmatically analyzing the one or morerequirements and the current configuration of the measurement system.For example, the method may determine whether the specified task may beperformed using the current configuration of the measurement system. Ifthe current configuration of the measurement system is not adequate forthe task, then the method may determine additional measurement productsneeded to perform the task, and that are also compatible with thecurrent devices and/or programs in the current configuration of themeasurement system. If the method determines that some of the currentcomponents, i.e., devices and/or programs, are not suitable forperforming the specified task, then one or more measurement products maybe proposed for replacement of the unsuitable components. Thedetermination of the current configuration of the measurement system(e.g., the client system) may be performed in a variety of ways.

[0517] In one embodiment, the server computer may download an agent orprogram to the client system, which may then execute on the clientsystem, e.g., on a device of the client system, to programmaticallydetermine the current configuration of the client system. The agent orprogram may then provide the determined configuration information to theserver computer. In another embodiment, the server computer may accessat least a portion of the information from at least one of the devicesin the system. For example, the server computer (or the downloaded agentor program) may programmatically determine the current configuration byaccessing plug and play information to determine the presence of theplurality of devices and the one or more programs. As another example,programmatically determining the current configuration may includequerying a configuration program resident on one of the devices in thesystem to determine the presence of the devices and programs.

[0518] In one embodiment, a configuration diagram representing thecurrent configuration of the measurement system may be determined, asindicated in 4106. In other words, a configuration diagram may begenerated or retrieved from a database that iconically represents thedevices and/or programs currently included in the measurement system. Asdescribed above, in one embodiment, the (current) configuration diagrammay include device icons representing each of the plurality of devices,link icons indicating coupling relationships between the plurality ofdevices, and program icons representing any programs currently stored orinstalled in the measurement system. Examples of configuration diagramsare described above with reference to FIGS. 21A and 21B, although it isnoted that these configuration diagrams are exemplary only, and are notintended to limit the diagrams to any particular form, style, orfunctionality.

[0519] In one embodiment, a tree diagram which visually represents thesystem may be generated or retrieved from a database, where the treediagram displays a hierarchical view of the plurality of devices and theone or more programs, and the tree diagram displayed on the display,thus providing a second or alternative view of the system.

[0520] In an embodiment where the current configuration of themeasurement system is used to generate a (current) configuration diagramwhich iconically represents the current configuration of the measurementsystem, the generated diagram may be displayed on a display of theclient computer system 82, and/or on a display device of the servercomputer system 90. In one embodiment, the configuration diagramrepresenting the current configuration of the measurement system may bemodified, e.g., by the server computer 90, to include the proposed oneor more measurement products, in which case, displaying the diagram mayinclude displaying information representing at least a subset of theplurality of measurement products to the user as proposed hardwareand/or software products for the measurement system. For example,modifying the diagram may include adding one or more measurement producticons to the diagram representing the proposed measurement products foruse in the measurement system, where the icons of the proposed productsmay be displayed differently from the other product icons to visuallyindicate that they are proposed products. In one embodiment,modifications made to either of the configuration diagram or the treediagram may automatically result in corresponding changes to the otherdiagram.

[0521] As described above with reference to FIG. 40, in one embodiment,the method may programmatically analyze the current configuration, e.g.,the configuration diagram (in light of the requirements), and determinethat one or more of the components represented in the configurationdiagram could be changed or replaced to provide an improved solution orconfiguration for the measurement system. For example, alternatecouplings between components or alternative devices may be proposed.Thus, in one embodiment, in response to analyzing the configurationdiagram, product icons may be displayed representing products availablefor use in the client system, where the products are proposed to augmentor replace components in the current configuration of the measurementsystem. In one embodiment, the icons representing the proposed productsmay replace the icons representing the components proposed to bereplaced. In another embodiment, the icons representing the proposedreplacement products may be added to the configuration diagram, wheretextual or graphical means are used to indicate the proposedreplacements. For example, a proposed replacement link may be presentedin one color or line style (e.g., a dashed line), while the “replaced”link may be presented in a different color or line style. In anotherembodiment, the proposed measurement products may be presented to theuser in a palette, e.g., as part of, or in addition to, theconfiguration diagram.

[0522] In one embodiment, the diagram may also be modified to includepricing information for the proposed measurement products, andoptionally, the other products in the diagram, as well. For example, inone embodiment, pricing information may be displayed proximate torespective measurement product icons in the configuration diagram, e.g.,in response to the user right-clicking on an icon, or in response to theuser “hovering” the cursor over an icon. In other embodiments,additional information related to the proposed products may also beincluded in the configuration diagram, such as, for example,availability, order information, model numbers, descriptions, and soforth, as mentioned above. For example, the diagram may be modified toinclude estimated delivery times for the proposed products, e.g., inresponse to the user right-clicking or hovering over a product icon.

[0523] Once the (modified) configuration diagram has been provided fordisplay to the user, e.g., via the client computer system 82, then in4108, user input may be received indicating purchase of at least one ofthe one or more measurement products. For example, the user may specifypurchase of the products by dragging and dropping icons from a paletteto the configuration diagram, or, in an embodiment where the productsare represented by icons in the (modified) configuration diagram, theuser may right-click on a respective icon, thereby invoking a menu orpop-up dialog box that displays purchase options for the correspondingproduct, e.g., payment methods, etc. The user may select a desiredpurchase option and may be prompted for additional payment information,such as a billing account or credit card number, which may then beentered and provided to the server computer over the network.

[0524] In response to receiving user input specifying purchase of theproposed measurement products, then in 4110, at least one of the one ormore proposed measurement products may be provided to the user. Forexample, if the product is a program, the program may be downloaded fromthe server computer 90 (or another server coupled to the network), ordelivered via any other means as desired. In one embodiment, the usermay drag and drop the program icon onto a device icon in theconfiguration diagram to invoke deployment of the program onto thedevice corresponding to the device icon. For more detailed informationregarding deployment of programs using a configuration diagram, pleasesee U.S. patent application Ser. No. 10/113,067, titled “GraphicallyDeploying Programs on Devices in a System”, filed Apr. 01, 2002, andU.S. patent application Ser. No. 10/123,511 titled “GraphicalAssociation of Program Icons,” filed Apr. 16, 2002, which wereincorporated by reference above. If the purchased product is a hardwaredevice, the device may be delivered via standard delivery means, e.g.,by mail.

[0525] In one embodiment, providing the at least one of the proposedproducts to the user may include displaying order-tracking informationfor the purchased products. For example, once the purchase has beenfinalized, the user may right-click or hover the cursor over the icon tocheck the order and/or tracking status of the product.

[0526] In one embodiment, the proposed (and optionally purchased)measurement products may include at least one measurement device and atleast one software product or program. For example, at least one of theone or more software products or programs may be operable to be deployedon at least one of the one or more measurement devices to perform arespective measurement function or operation. In one embodiment,information indicating at least one measurement device of the one ormore measurement devices and at least one software product of the one ormore software products may be provided to a manufacturer in response todetermining the proposed measurement products. The manufacturer may thenconfigure the at least one measurement device with the at least onesoftware product to produce at least one configured measurement device,where the at least one configured measurement device is operable toperform at least a portion of the measurement task. The manufacturer maythen send the configured at least one measurement device to the user.

[0527] As mentioned above, the measurement devices and programs may beof various types and functionality. For example, in one embodiment, aproposed and purchased measurement device may include a programmablehardware element, such as an FPGA. A program proposed and purchased foruse with the device may be a hardware configuration program which whendeployed onto the FPGA configures the measurement device (the FPGA) toperform a measurement function. Thus, the manufacturer may receive theinformation indicating the measurement device and the hardwareconfiguration program (and may also receive the program itself) from theserver, deploy the program onto the FPGA of the measurement device, andprovide the configured device to the user. In an alternative embodiment,the manufacturer may receive a program, e.g., a graphical program, whichis compilable or convertible to the hardware configuration program. Inthis case, the manufacturer may generate the hardware configurationprogram from the received program and deploy the generated hardwareconfiguration program onto the FPGA, as described above.

FIGS. 42-44—Configuration Diagram Database

[0528] FIGS. 42-44 flowchart various embodiments of methods for thecreation and use of a configuration database. More specifically, FIGS.42 and 43 flowchart embodiments of a method for using a configurationdiagram database to configure a client system, e.g., a measurementsystem, and FIG. 44 flowcharts an embodiment of a method for creatingthe configuration database. The embodiments of FIGS. 42-44 may beimplemented in the system described above with reference to FIG. 1,where the client system, e.g., a client computer, e.g., the firstcomputer system 82, is coupled to a server computer system, e.g., thesecond computer system 90, through a network 84 (or a computer bus). Asnoted above, in various embodiments, the client system may be one ormore of a test and measurement system, a modeling or simulation system,a network system, and an automation system, among others. It should benoted, however, that the these domains or fields of application aremeant to be exemplary only, and are not intended to limit theapplication and use of the present invention to any particular field ordomain.

[0529]FIG. 42 flowcharts one embodiment of a method for configuring aclient system using a configuration database. As FIG. 42 shows, in 4202,first input may be received from a client system over a networkrequesting access to a plurality of configuration diagrams, e.g., storedin a configuration diagram database. For example, a user of the clientsystem may wish to configure the client system to perform a desiredtask, e.g., a measurement task, but may be unsure as to how to do so.Each of the plurality of configuration diagrams may include or representa solution to a respective task. In other words, each configurationdiagram may graphically, e.g., iconically, represent one or moreproducts, e.g., devices and/or programs, that are together operable toperform a respective task. In various embodiments, the configurationdiagram database storing a plurality of configuration diagrams mayinclude one or more of: storing respective bitmaps of theconfigurations, storing graphical programs that implement theconfiguration diagrams, storing data from which the configurationdiagram may be generated, and storing links for accessing configurationdiagrams stored on other systems, e.g., in a distributed database, amongother implementations.

[0530] In one embodiment, the first input may be provided in response touser input. For example, the client system may access a configurationdiagram server computer system over the network, the user of the clientsystem may enter user input to the client system, e.g., via a keyboardor mouse, and the client system may in response send the first input tothe server computer system over the network.

[0531] In response to receiving the first input, in 4204, at least asubset of the plurality of configuration diagrams may be displayed on adisplay device of the client system for viewing by the user of theclient system. For example, the at least a subset of the plurality ofconfiguration diagrams may be retrieved from the configuration databaseand displayed to the user. In one embodiment, the user of the clientsystem may browse one or more configuration diagrams from theconfiguration diagram database, e.g., using a web-browser, as iswell-known in the art. In one embodiment, the user may browse or searchthrough the various configuration diagrams using keywords or otherinformation related to the configuration diagrams, as discussed in moredetail below.

[0532] Then, as indicated in 4206, second input may be received from theclient system selecting one of the at least a subset of the plurality ofconfiguration diagrams, where the selected configuration diagramindicates a solution for the desired task to be performed by the clientsystem. In other words, the user may indicate which of the configurationdiagrams provides a suitable solution for performing the desired task.Said another way, the selected configuration diagram may be usable toconfigure the client system, thereby enabling the client system toperform the task.

[0533] In one embodiment, information related to each of the at least asubset of the plurality of configuration diagrams may be provided to theuser, and the selection made based on the provided information. Forexample, the information may include one or more of: identificationinformation for the configuration diagram; version information for theconfiguration diagram; a functional description of the configurationdiagram; platform information for the configuration diagram; searchableinformation for the configuration diagram; a list of devices and/orprograms represented in the configuration diagram, possibly includingpricing information; and one or more tasks for which the configurationdiagram comprises a solution, among others.

[0534] In one embodiment, payment information may be received from theclient system prior to providing the solution. In other words,information such as a credit card number or a billing account may beprovided by the client system (e.g., the user) for payment for theprovided solution.

[0535] Finally, in 4208, the solution may be provided to the clientsystem over the network. In one embodiment, providing the solution tothe client system may include providing information related to one ormore products to the user as proposed hardware and/or software productsfor the client system, where the proposed hardware and/or software isoperable to perform the task. In one embodiment the selectedconfiguration diagram may be provided to the client system, where theselected configuration diagram includes information representing theproposed hardware and/or software products for the client system.

[0536] For example, the configuration diagram may graphically representone or more (or a plurality of) devices in a proposed system, as well asone or more programs (or a plurality of programs) stored on the one ormore devices in the proposed system. In the case that the configurationdiagram represents a plurality of devices, the configuration diagram mayinclude a plurality of device icons representing the plurality ofdevices in the proposed system. The plurality of device icons may beconnected by link icons indicating couplings between the plurality ofdevices in the proposed system.

[0537] In one embodiment, the configuration diagram may comprise a treediagram which visually represents the proposed system, wherein the treediagram displays a hierarchical view of the plurality of devices and theone or more programs in the proposed system. In another embodiment, oneor more of the configuration diagrams may comprise the plurality ofdevice icons connected by link icons indicating couplings between theplurality of devices in the proposed system, as well as the tree diagrampresenting a hierarchical view of the devices (and optionally theprograms) in the proposed system. Further details regarding variousembodiments of configuration diagrams are provided above with referenceto FIGS. 21A and 21B, although it is noted that these configurationdiagrams are exemplary only, and are not intended to limit the diagramsto any particular form, style, or functionality.

[0538] The configuration diagram may further graphically representconfiguration information for at least one of the one or more devicesand the one or more programs in the proposed system. In other words, theprovided configuration diagram may comprise a proposed configuration forthe client system.

[0539] As mentioned above, the configuration diagram may include pricingor other related information for the one or more devices in the proposedsystem and the one or more programs stored on the one or more devices inthe proposed system, e.g., displayed proximate to respective producticons in the diagram.

[0540] In an embodiment where the provided configuration diagramcomprises a proposed configuration of the client system, the method mayfurther include receiving a modified version of the provided solutionfrom the client system over the network, where the modified version ofthe provided solution includes one or more changes to the proposedconfiguration. In other words, once the client system, e.g., the user,has received the proposed solution, e.g., the provided configurationdiagram, the user may modify the configuration diagram to reflectdesired changes in the proposed configuration. For example, if the useralready owns a signal conditioning unit, a signal conditioning unitproposed for use in the configuration diagram may be replaced (by theuser) with the already owned unit. The modified configuration diagrammay then be provided by the client system to the server computer systemover the network.

[0541] In one embodiment, providing information related to one or moreproducts to the user as proposed hardware and/or software products forthe client system may include determining a current configuration of theclient system, analyzing the current configuration of the client systemand the selected configuration diagram, and determining the one or moreproducts based on the analysis. In other words, the server system maydetermine the current configuration of the client system, and determinethe proposed configuration based at least partly on the currentconfiguration.

[0542] In one embodiment, once the client system has received theproposed solution from the server computer system, user input may bereceived indicating purchase of at least one of the proposed hardwareand/or software products. The at least one of the proposed hardwareand/or software products may then be provided to the user in response.For example, as described above, purchased software products may bedownloaded and/or deployed directly to the client system over thenetwork, and purchased hardware devices may be delivered via traditionalmeans, e.g., via mail or any other delivery means.

[0543] In one embodiment, the selected configuration diagram may includevendor information indicating one or more vendors able to configure asolution in accordance with the selected configuration diagram. Forexample, the vendor information may include one or more of: an emailaddress, a website address, a telephone number, a postal address, andvendor identification, among other information. As noted above, the term“vendor” refers to a business, enterprise, supplier, or manufacturerthat sells products and/or provides services related to products, suchas, for example, installing hardware and/or software. An example of avendor is a National Instruments Alliance member.

[0544] In a further embodiment, input may be received from the clientsystem indicating a desire to correspond with a first vendor of the oneor more vendors, and the method may include programmaticallycorresponding with the first vendor in response to said third input. Forexample, the user may click on an email address or otherwise indicate adesire to contact the vendor, in response to which an email message (orother correspondence means) may be sent to the vendor, or alternatively,presented to the user for modification and sending to the vendor. Asanother example, the user may right-click on the icon to invoke a pop-upmenu presenting various means of contacting the vendor, e.g., anauto-dialer for automatically establishing telephone contact, a web linkor URL (Universal Resource Locator) for accessing the vendor's website,and so forth.

[0545]FIG. 43 illustrates an alternative embodiment of the method ofFIG. 42. More specifically, in the embodiment shown in FIG. 43, aconfiguration diagram from the configuration diagram database isdetermined programmatically based on user provided requirements, asdescribed below. Where the steps are substantially the same as those ofthe above methods, the descriptions have been abbreviated.

[0546] As FIG. 43 shows, in 4302, requirements may be received over anetwork for a task to be performed by a client system. In a preferredembodiment, the requirements may be provided in response to input from auser. For example, the user may provide user input to the clientcomputer system 82 indicating the requirements for the task, and theclient computer system 82, in response to the user input, may send therequirements to server computer system 90.

[0547] As noted above with reference to step 4102 of FIG. 41, the userinput (and/or requirements) may include domain specific user input, suchas measurement-, simulation-automation-, or network-specific input. Asalso noted above, the requirements may comprise, or may be used togenerate, a task specification, e.g., a measurement task specification.

[0548] Once the requirements have been received, then in 4304, thereceived requirements may be programmatically analyzed, and in 4306, aconfiguration diagram determined from a configuration diagram databasein response to the analysis, where the configuration diagram representsa proposed system configuration for the client system for performing thetask. As described in detail above, the system configuration diagram mayspecify one or more devices and/or one or more programs for the clientsystem to perform the task.

[0549] The determined configuration diagram may then be provided to theclient system over the network for display to a user of the clientsystem, as indicated in 4308. As described in detail above, thedetermined configuration diagram may be usable to configure the clientsystem, thereby enabling the client system to perform the task. As alsonoted above, the configuration diagram may graphically represent one ormore devices present in a proposed system, and one or more programsstored on the one or more devices in the proposed system.

FIG. 44—Population of a Configuration Diagram Database

[0550]FIG. 44 flowcharts an embodiment of a method for populating aconfiguration diagram database. As FIG. 44 shows, the first step of FIG.44 is substantially the same as in the methods of FIGS. 41 and 43,where, in 4102, requirements may be received over a network for a taskto be performed by a client system, preferably in response to input froma user. As noted above, the task may be any type of task, such as, forexample, a measurement task, a control task, an automation task, amodeling and/or simulation task, and a network management task, amongothers. As also noted above, in one embodiment, the requirements for thetask may include or may be used to generate a task specification.

[0551] In 4404, a system configuration may be determined in response tothe received requirements, where the system configuration specifies oneor more devices and/or one or more programs for the client system toperform the task. In other words, based on the requirements, a systemconfiguration may be determined such that, if the client system were soconfigured, the client system would be operable to perform the task.

[0552] Then, in 4406, a configuration diagram may then be generated inresponse to the determination of the system configuration, where theconfiguration diagram graphically represents the determined systemconfiguration for the client system. As described in detail above, theconfiguration diagram may specify and/or graphically represent, one ormore devices and/or one or more programs for the client system toperform the task. As noted above, further details regarding variousembodiments of configuration diagrams are provided above with referenceto FIGS. 21A and 21B.

[0553] Once the configuration diagram has been generated, then in 4408the generated configuration diagram may be stored in a configurationdiagram database. A plurality of stored configuration diagrams,including the generated configuration diagram, may be retrievable fromthe configuration diagram database for provision to a plurality of usersover the network. In other words, the configuration diagram database mayfunction as a configuration solutions “clearinghouse” for clients, wherea plurality of users may access a configuration diagram database serverfor configuration solutions for desired tasks. For example, theconfiguration diagram database may be browsable by a plurality of usersto view stored configuration diagrams, including the generatedconfiguration diagram, where one or more configuration diagrams are userselectable and retrievable from the configuration diagram database. Asnoted above, the configuration diagram may include device icons andlinks indicating couplings between the devices, and/or may be a treediagram presenting a hierarchical view of the proposed system.

[0554] In an alternate approach, users may provide requirements for atask, and an appropriate solution (e.g., a configuration diagram)programmatically determined (and retrieved) from the database. Variousembodiments of methods for using the configuration diagram database aredescribed above with reference to FIGS. 42 and 43.

[0555] In addition to the above-described approach for populating theconfiguration diagram database, other approaches may also be used topopulate the database with configuration diagrams. For example, aplurality of pre-defined configuration diagrams may be generatedrepresenting a corresponding plurality of pre-defined systemconfigurations, where each pre-defined system configuration comprises arespective solution for performing a task. The plurality of pre-definedconfiguration diagrams may then be stored in the configuration diagramdatabase, where the plurality of stored configuration diagrams,including the generated pre-defined configuration diagrams, may beretrievable from the configuration diagram database for provision to aplurality of users over the network.

[0556] In another approach to populating the configuration diagramdatabase, one or more configuration diagrams may be received from asecond client system over the network, where the one or moreconfiguration diagrams each comprise a solution to a respective task.The received one or more configuration diagrams may be stored in theconfiguration diagram database, and as above, the plurality of storedconfiguration diagrams, including the received configuration diagrams,may be retrievable from the configuration diagram database for provisionto a plurality of users over the network. In other words, respectiveusers of client systems may devise their own solutions to desired tasksand provide them for storage and subsequent retrieval in theconfiguration database. For example, a user may draw at least a portionof the configuration diagram, e.g., using a graphical tool, and providethe diagram for storage in the database. In another embodiment, a vendormay provide one or more configuration diagrams for storage in theconfiguration diagram database, where each configuration diagramrepresents a system that the vendor is able to install. In oneembodiment, at least one of the configuration diagrams may include aplurality of product icons representing respective devices from aplurality of vendors.

[0557] For example, in one embodiment, one or more of the product iconsmay represent used products, e.g., resale products, which may beavailable for purchase from one or more vendors, thus providing a moreaffordable solution to users who may not otherwise wish to or be able topurchase the products new.

[0558] In an alternative embodiment, rather than receiving one or moreconfiguration diagrams from the second client system, one or more systemconfigurations may be received from the second client system over thenetwork, each comprising a solution to a respective task. One or morecorresponding configuration diagrams may then be generated in response,where the generated configuration diagrams graphically represent thereceived system configurations. The generated configuration diagrams maythen be stored in the configuration diagram database, as describedabove.

[0559] As noted above, in a preferred embodiment, each of theconfiguration diagrams may include associated information describing therespective configuration diagrams, where at least a portion of thereceived information is stored in the configuration diagram database. Inanother embodiment, information related to each of the plurality ofstored configuration diagrams may be stored, where the storedinformation is usable to retrieve the stored configuration diagrams. Forexample, in various embodiments, the information related to eachconfiguration diagram may include one or more of: identificationinformation for the configuration diagram, version information for theconfiguration diagram, a functional description of the configurationdiagram, platform information for the configuration diagram, searchableinformation for the configuration diagram, a list of devices and/orprograms represented in the configuration diagram, and one or more tasksfor which the configuration diagram comprises a solution. Of course,other information related to each configuration diagram may also be usedas desired or needed.

[0560] Thus, various embodiments of the systems and methods describedabove may provide improved network-based means for configuring clientcomputer systems to perform desired tasks.

[0561] Various embodiments further include receiving or storinginstructions and/or data implemented in accordance with the foregoingdescriptions upon a carrier medium. Suitable carrier media include amemory medium as described above, as well as signals such as electrical,electromagnetic, or digital signals, conveyed via a communication mediumsuch as networks and/or a wireless link.

[0562] Although the embodiments above have been described inconsiderable detail, numerous variations and modifications will becomeapparent to those skilled in the art once the above disclosure is fullyappreciated. It is intended that the following claims be interpreted toembrace all such variations and modifications.

We claim:
 1. A method for characterizing a system, wherein the systemcomprises a plurality of devices coupled together, wherein at least oneof the devices includes one or more programs, the method comprising:programmatically determining information regarding the plurality ofdevices and the one or more programs; programmatically generating adiagram which visually represents the system, wherein saidprogrammatically generating is performed based on the programmaticallydetermined information, wherein the diagram includes device iconsrepresenting each of the plurality of devices, wherein the diagram alsoincludes link icons indicating coupling relationships between theplurality of devices, and wherein the diagram also includes programicons representing each of the one or more programs; and displaying thediagram on a display.
 2. The method of claim 1, wherein said displayingcomprises displaying the diagram on a display of the system for viewingby a user of the system.
 3. The method of claim 1, further comprising:storing the diagram on a memory medium of the system.
 4. The method ofclaim 1, wherein the diagram is a configuration diagram.
 5. The methodof claim 1, wherein the program icons are visually displayed to indicateassociations with respective device icons representing respectivedevices in which the programs are stored and/or executed.
 6. The methodof claim 1, wherein at least one of the one or more programs is ahardware configuration program.
 7. The method of claim 1, wherein atleast one of the plurality of devices comprises a field programmablegate array (FPGA); and wherein said hardware configuration program isdeployable on the FPGA to perform a function.
 8. The method of claim 1,wherein said programmatically determining comprises programmaticallyanalyzing the system to determine presence of one or more of theplurality of devices and the one or more programs.
 9. The method ofclaim 1, wherein said programmatically determining comprises accessingat least a portion of said information from at least one of the devicesin the system.
 10. The method of claim 1, wherein said programmaticallydetermining comprises accessing plug and play information to determinepresence of the plurality of devices and presence of the one or moreprograms.
 11. The method of claim 1, wherein said programmaticallydetermining comprises querying a configuration program resident on oneof the devices in the system to determine presence of the plurality ofdevices and presence of the one or more programs.
 12. The method ofclaim 1, further comprising: receiving user input graphicallyassociating a first program icon with a first device icon, wherein saidgraphically associating operates to deploy a first program correspondingto the first program icon with a first device corresponding to the firstdevice icon.
 13. The method of claim 12, further comprising: animatingsaid deploying the first program onto the device.
 14. The method ofclaim 13, wherein said animating comprises moving the first program iconto a location in the diagram proximate to the first device icon.
 15. Themethod of claim 1, further comprising: deploying a first program on thesystem after said displaying the diagram; and displaying a first programicon in the diagram, wherein the first program icon corresponds to thefirst program.
 16. The method of claim 1, wherein the device icons eachhave an appearance to visually indicate a type of the respective device.17. The method of claim 1, wherein the program icons each have anappearance to visually indicate a type of the respective program. 18.The method of claim 1, wherein the link icons each have an appearance tovisually indicate a type of the respective link between devices.
 19. Themethod of claim 1, wherein the system comprises a measurement system;wherein the plurality of devices comprise one or more measurementdevices which are each operable to perform a respective measurementfunction; wherein the one or more programs comprise one or moremeasurement programs for performing measurement functions; and whereinsaid programmatically determining information regarding the plurality ofdevices and the one or more programs comprises programmaticallydetermining a configuration of the one or more measurement devices andthe one or more measurement programs in the measurement system.
 20. Themethod of claim 1, wherein the system comprises a simulation system;wherein the plurality of devices comprise one or more devices which areeach operable to perform a respective simulation function; wherein theone or more programs comprise one or more simulation programs forsimulating a process, device, and/or system; and wherein saidprogrammatically determining information regarding the plurality ofdevices and the one or more programs comprises programmaticallydetermining a configuration of the one or more devices and the one ormore programs in the simulation system.
 21. The method of claim 1,wherein the system comprises an automation system; wherein the pluralityof devices comprise one or more devices which are each operable toperform a respective automation function; wherein the one or moreprograms comprise one or more automation programs for automating aprocess, device, and/or system; and wherein said programmaticallydetermining information regarding the plurality of devices and the oneor more programs comprises programmatically determining a configurationof the one or more automation devices and the one or more automationprograms in the automation system.
 22. The method of claim 1, whereinthe system comprises a network system; wherein the plurality of devicescomprise one or more devices which are each operable to perform arespective network function; wherein the one or more programs compriseone or more network programs for managing a network; and wherein saidprogrammatically determining information regarding the plurality ofdevices and the one or more programs comprises programmaticallydetermining a configuration of the one or more automation devices andthe one or more programs in the network system.
 23. The method of claim1, further comprising: receiving user input specifying a modification tothe diagram after said displaying, wherein said modification indicateshardware and/or software to be added to or removed from the system; andmodifying the configuration diagram in response to said receiving userinput.
 24. The method of claim 1, wherein a server computer is coupledto the system over a network; the method further comprising:establishing electronic communication between the server computer andthe system over a network; wherein the server computer performs at leastone of said programmatically determining information and saidprogrammatically generating the diagram.
 25. The method of claim 1,wherein the system includes a first computer system; wherein a servercomputer is coupled to the system over a network; wherein the firstcomputer system and the server computer system perform respectiveportions of said programmatically determining information and saidprogrammatically generating the diagram.
 26. The method of claim 1,wherein the system includes a first computer system; wherein the firstcomputer system performs at least one of said programmaticallydetermining information and said programmatically generating thediagram.
 27. The method of claim 1, wherein the system includes a firstcomputer system; wherein a server computer is coupled to the system overa network; wherein the first computer system performs saidprogrammatically determining information; the method further comprising:establishing electronic communication between the server computer andthe system over a network; wherein the server computer performs saidprogrammatically generating the diagram based on the programmaticallydetermined information.
 28. The method of claim 1, wherein the systemincludes a first computer system; wherein a server computer is coupledto the system over a network; the method further comprising:establishing electronic communication between the server computer andthe system over a network; wherein the server computer performs saidprogrammatically determining information; and wherein the first computersystem performs said programmatically generating the diagram based onthe programmatically determined information.
 29. The method of claim 1,further comprising: programmatically generating a tree diagram whichvisually represents the system, wherein said programmatically generatingthe tree diagram is performed based on the programmatically determinedinformation, wherein the tree diagram displays a hierarchical view ofthe plurality of devices and the one or more programs; and displayingthe tree diagram on the display.
 30. A method for characterizing aclient system, the method comprising: establishing electroniccommunication between a server computer and the client system over anetwork, wherein the client system comprises a plurality of devicescoupled together, wherein at least one of the devices includes one ormore programs; the server computer programmatically determininginformation regarding the plurality of devices and the one or moreprograms; the server computer programmatically generating a diagramwhich visually represents the client system, wherein the diagramincludes device icons representing each of the plurality of devices,wherein the diagram also includes link icons indicating couplingrelationships between the plurality of devices, and wherein the diagramalso includes program icons representing each of the one or moreprograms; and displaying the diagram on a display.
 31. A method forcharacterizing a client system, wherein the client system comprises aplurality of devices coupled together, and wherein at least one of thedevices includes one or more programs, the method comprising: the serverestablishing electronic communication with the client system over anetwork; the server programmatically analyzing the client system todetermine presence of the plurality of devices and presence of the oneor more programs; the server programmatically generating a configurationdiagram which visually represents the client system, wherein theconfiguration diagram includes device icons representing each of theplurality of devices, wherein the configuration diagram also includeslink icons indicating coupling relationships between the plurality ofdevices, and wherein the configuration diagram also includes programicons representing each of the one or more programs; providing theconfiguration diagram from the server over the network; and displayingthe configuration diagram on a display of the client system.
 32. Themethod of claim 31, further comprising: storing the configurationdiagram in a memory medium of the client system, wherein theconfiguration diagram is usable for one or more of: documenting theclient system configuration, modifying the client system configuration,and adding or removing programs or devices to or from the client system.33. The method of claim 31, wherein the program icons are visuallydisplayed proximate to respective device icons representing respectivedevices in which the programs are stored and/or executed.
 34. A carriermedium which stores program instructions for characterizing a system,wherein the system comprises a plurality of devices coupled together,wherein at least one of the devices includes one or more programs,wherein the program instructions are executable to perform:programmatically determining information regarding the plurality ofdevices and the one or more programs; programmatically generating adiagram which visually represents the system, wherein saidprogrammatically generating is performed based on the programmaticallydetermined information, wherein the diagram includes device iconsrepresenting each of the plurality of devices, wherein the diagram alsoincludes link icons indicating coupling relationships between theplurality of devices, and wherein the diagram also includes programicons representing each of the one or more programs; and displaying thediagram on a display.
 35. A carrier medium which stores programinstructions for characterizing a client system, wherein the programinstructions are executable to perform: establishing electroniccommunication between a server computer and the client system over anetwork, wherein the client system comprises a plurality of devicescoupled together, wherein at least one of the devices includes one ormore programs; the server computer programmatically determininginformation regarding the plurality of devices and the one or moreprograms; the server computer programmatically generating a diagramwhich visually represents the client system, wherein the diagramincludes device icons representing each of the plurality of devices,wherein the diagram also includes link icons indicating couplingrelationships between the plurality of devices, and wherein the diagramalso includes program icons representing each of the one or moreprograms; and displaying the diagram on a display.
 36. A system forcharacterizing a client system, wherein the client system comprises aplurality of devices coupled together, and wherein at least one of thedevices includes one or more programs, the system comprising: aprocessor; and a memory medium coupled to the processor; and a displaycoupled to the memory medium and the processor; wherein the memorymedium stores program instructions which are executable to perform:electronically connecting to the client system over a network;programmatically determining information regarding the plurality ofdevices and the one or more programs; programmatically generating adiagram which visually represents the client system, wherein the diagramincludes device icons representing each of the plurality of devices,wherein the diagram also includes link icons indicating couplingrelationships between the plurality of devices, and wherein the diagramalso includes program icons representing each of the one or moreprograms; and displaying the diagram on the display.
 37. A system,comprising: a server computer system, wherein the server system iscoupled to a network; a client system, comprising a plurality of devicescoupled together, wherein at least one of the devices includes one ormore programs, and wherein the client system further comprises adisplay; wherein the client system is operable to access the serversystem over the network; wherein the server computer system is operableto: programmatically determine information regarding the plurality ofdevices and the one or more programs; programmatically generate adiagram which visually represents the client system, wherein the diagramincludes device icons representing each of the plurality of devices,wherein the diagram also includes link icons indicating couplingrelationships between the plurality of devices, and wherein the diagramalso includes program icons representing each of the one or moreprograms; and transmit the diagram to the client system over thenetwork; wherein the client system is further operable to: receive thediagram from the server computer system; and display the diagram on thedisplay of the client system; wherein the diagram is usable for one ormore of: documenting the client system configuration; modifying theconfiguration of the client system; and debugging the configuration ofthe client system.
 38. A method for characterizing a system, the methodcomprising: electronically connecting to a system over a network,wherein the system comprises a plurality of devices coupled together,wherein at least one of the devices includes one or more programs;programmatically determining information regarding the plurality ofdevices and the one or more programs in the system, wherein saidprogrammatically determining includes accessing at least one of thedevices in the system over the network; programmatically generating adiagram which visually represents the system, wherein the diagramincludes device icons representing each of the plurality of devices,wherein the diagram also includes link icons indicating couplingrelationships between the plurality of devices, and wherein the diagramalso includes program icons representing each of the one or moreprograms; and displaying the diagram on a display.
 39. A method forcharacterizing a client system, the method comprising: establishingelectronic communication between a server computer and the client systemover a network, wherein the client system comprises a plurality ofdevices coupled together, wherein at least one of the devices includesone or more programs; the server computer providing a first softwareprogram to the client system over the network; executing the firstsoftware program on the client system, wherein said executing comprises:the first software program programmatically determining informationregarding the plurality of devices and the one or more programs in theclient system; the first software program programmatically generating adiagram which visually represents the client system, wherein the diagramincludes device icons representing each of the plurality of devices,wherein the diagram also includes link icons indicating couplingrelationships between the plurality of devices, and wherein the diagramalso includes program icons representing each of the one or moreprograms; and displaying the diagram on a display device of the clientsystem.
 40. A method for characterizing a client system, the methodcomprising: establishing electronic communication between a servercomputer and the client system over a network, wherein the client systemcomprises a plurality of devices coupled together, wherein at least oneof the devices includes one or more programs; the server computerproviding a first software program to the client system over thenetwork; executing the first software program on the client system,wherein said executing comprises: the first software programprogrammatically determining information regarding the plurality ofdevices and the one or more programs in the client system; and the firstsoftware program providing the determined information to the servercomputer; the server computer programmatically generating a diagramwhich visually represents the client system, wherein the diagramincludes device icons representing each of the plurality of devices,wherein the diagram also includes link icons indicating couplingrelationships between the plurality of devices, and wherein the diagramalso includes program icons representing each of the one or moreprograms; and displaying the diagram on a display device of the clientsystem.
 41. A carrier medium for transmission of a first softwareprogram, wherein the first software program comprises programinstructions executable to: programmatically determine informationregarding a plurality of devices and one or more programs in a clientsystem; programmatically generate a diagram which visually representsthe client system, wherein the diagram includes device iconsrepresenting each of the plurality of devices, wherein the diagram alsoincludes link icons indicating coupling relationships between theplurality of devices, and wherein the diagram also includes programicons representing each of the one or more programs; and display thediagram on a display device of the client system.